2012-01-01 50 views
1

我想知道如何在一个范围分割字符串:如何分割一个范围的字符串?

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

需要得到<之间的范围...>:

foo 
bar 
+0

这个不清楚。你想要发生什么?'some'? – 2012-01-01 16:38:08

回答

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

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