首先,这个问题的解决方案需要非常有效。
我的问题是我需要比较两个APT_String
的某些部分(DataStage类型)。即,字符串是包含空格字符的姓氏,例如“Brown Marrow”。但是,名称位于30字节字段中,剩余空间填充空格字符。
简而言之,我需要找到两个连续空格字符的第一个实例(表示有用姓氏的结尾)。我的解决方案是
bool foundit = false;
for (int ind = 0; ind<=q_array[i].LAST_NAME.length() && !foundit; ind++) {
if (q_array[i].LAST_NAME[ind] == ' ' && q_array[i].LAST_NAME[ind+1] == ' ') {
cout<<"two spaces in a row at char " << ind << endl;
foundit = true;
}
}
不幸的是,APT_String似乎没有find(),或者我会使用它。有没有人有更好或更有效的方法来做到这一点?
答案 0 :(得分:0)
同样,如果你想知道某些字符是否在字符串中,你需要迭代它。没有其他机会,即使find
和strcmp
和whatelse也这样做。没有机会围绕这个循环的东西。
现在,您始终可以将APT_String
包装在您自己的myAPT_String
类中,该类还有一个size_t string_size
成员,您需要管理该成员,并使用它来跳到结尾字符串。
答案 1 :(得分:0)
一个30字节的字段不能花很长时间来扫描,可以吗?
如果要查找名称的末尾,我会从字符串的末尾开始并反向扫描,直到第一个非空格。