如何在C ++字符串中检测“_”?

时间:2010-09-16 10:04:44

标签: c++ string search find

我想知道字符串中“_”的位置:

string str("BLA_BLABLA_BLA.txt");

类似的东西:

string::iterator it;
for ( it=str.begin() ; it < str.end(); it++ ){
 if (*it == "_")         //this goes wrong: pointer and integer comparison
 {
  pos(1) = it;
 }
 cout << *it << endl;
}

谢谢, 安德烈

5 个答案:

答案 0 :(得分:16)

请注意,"_" 字符串文字 ,而'_' 字符文字 < / strong>即可。

如果您将迭代器取消引用到字符串中,您得到的是 字符 。当然,字符只能与 字符 文字进行比较,而不能与 字符串 进行比较文字

然而,正如其他人已经注意到的那样,你不应该自己实现这样的算法。它已经完成了一百万次,其中两次(std::string::find()std::find())最终进入了C ++的标准库。使用其中之一。

答案 1 :(得分:9)

std::find(str.begin(), str.end(), '_');
                               // ^Single quote!

答案 2 :(得分:8)

string :: find是你的朋友。 http://www.cplusplus.com/reference/string/string/find/

someString.find('_');

答案 3 :(得分:6)

您可以将find功能用作:

string str = "BLA_BLABLA_BLA.txt";
size_t pos = -1;

while( (pos=str.find("_",pos+1)) != string::npos) {
        cout<<"Found at position "<<pos<<endl;
}

输出:

Found at position 3
Found at position 10

答案 4 :(得分:6)