如何分割一个范围的字符串?
问题描述:
答
您可以使用string::find
反复:
size_t pos = 0;
while (true) {
size_t strt = mystring.find('<', pos);
pos = mystring.find('>', strt+1);
if (strt == string::npos || pos == string::npos) break;
cout << mystring.substr(strt+1, pos-strt-1) << endl;
}
+0
有没有理由'pos'不是循环的本地,而是'strt'? – 2012-01-01 16:42:43
+0
@SethCarnegie你需要为循环的下一次迭代保留'pos'。 – dasblinkenlight 2012-01-01 16:43:47
+0
哦哎呀,错过了 – 2012-01-01 16:47:17
答
使用迭代器:
string str = "some<foo>some<bar>some";
string::iterator i = str.begin(), token = i;
while (i != str.end()) {
if(*i == '<') {
token = i+1;
}
else if (*i == '>') {
string item(token, i);
cout << item << endl;
}
i++;
}
这个不清楚。你想要发生什么?'some'? – 2012-01-01 16:38:08