如何在范围上拆分字符串?

时间:2012-01-01 16:34:49

标签: c++ stl

我想知道如何在一个范围内拆分字符串:

std::string = "some<foo>some<bar>some...";

需要获得介于&lt; ...&gt;:

之间的范围
foo
bar

2 个答案:

答案 0 :(得分:2)

您可以反复使用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;
}

答案 1 :(得分:0)

使用迭代器:

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++;
}