Je voudrais savoir comment découper une chaîne sur une plage:Comment diviser une chaîne sur une plage?
std::string = "some<foo>some<bar>some...";
besoin d'obtenir une fourchette comprise entre < ...>:
foo
bar
Je voudrais savoir comment découper une chaîne sur une plage:Comment diviser une chaîne sur une plage?
std::string = "some<foo>some<bar>some...";
besoin d'obtenir une fourchette comprise entre < ...>:
foo
bar
Vous pouvez utiliser string::find
à plusieurs reprises:
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;
}
Y avait-il une raison pour que 'pos' ne soit pas local à la boucle mais' strt' est? –
@SethCarnegie vous devez conserver 'pos' pour la prochaine itération de la boucle. – dasblinkenlight
Oh whoops, manqué que –
En utilisant iterator:
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++;
}
Ce n'est pas clair. Qu'est-ce que vous voulez arriver à 'certains '? –