我想知道字符串中“_”的位置:
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;
}
谢谢, 安德烈
答案 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)