我试图让这个函数切割一个字符串,然后返回它没有空白和全部小写。为了做到这一点,我试图找到" "
以查看字符串"The Time Traveller (for so it will be convenient to speak of him)"
是否包含空格。C++ std :: string :: find总是返回npos?
代码如下,将上面的字符串传递给此函数。它总是返回string::npos
。有关这个问题的任何想法?
string chopstring(string tocut){
string totoken = "";
int start = 0;
while(tocut[0] == ' ' || tocut[0] == 10 || tocut[0 == 13]){
tocut.erase(0);
}
int finish = 0;
finish = tocut.find(" ", start);
if (finish == string::npos){
cout << "NPOS!" << endl;
}
for (int i = start; i < finish; i++){
totoken += tocut[i];
}
tocut.erase(start, finish);
return tokenize(totoken);
}
但在http://www.cplusplus.com/reference/string/string/erase/ 它说 迭代器擦除(迭代器位置); 擦除迭代器位置引用的字符。只有一个字符受到影响。 – samuraiseoul 2012-02-24 00:46:35
另外,'tocut [0] == 10 || tocut [0 == 13]'看起来很奇怪。如果你想比较字符文字,使用实际的文字(即10,而不是'\ n''),它更可读。 'tocut [0 == 13]'大概是一个错字,并且由于'0 == 13'总是为false,所以你会返回第一个字符的值(如果字符串不为空,它将不为零) 。再次使用字符文字(''\ r'') – 2012-02-24 00:49:27
@Samuraisoulification:'int'与'string :: iterator'不是一样的类型。 – 2012-02-24 00:50:00