Boost::tokenizer séparées par des virgules (c++)
Devrait être facile pour vous les gars.....
Je suis en train de jouer autour avec des générateurs de jetons à l'aide de Boost et je veux créer un jeton qui est séparé par des virgules. voici mon code:
string s = "this is, , , a test";
boost::char_delimiters_separator<char> sep(",");
boost::tokenizer<boost::char_delimiters_separator<char>>tok(s, sep);
for(boost::tokenizer<>::iterator beg= tok.begin(); beg!=tok.end(); ++beg)
{
cout << *beg << "\n";
}
La sortie que je veux, c'est:
This is
a test
Ce que je reçois est:
This
is
,
,
,
a
test
Mis à JOUR
Semblable à cette question: Si j'ai
this is,,,a test
et cout << "<" << *beg << "> ";
modifié dans votre code, comment puis-je obtenir des chaînes vides aussi, comme <this is> <> <> <a string>
?
OriginalL'auteur Lexicon | 2011-10-29
Vous devez vous connecter pour publier un commentaire.
Vous devez donner le séparateur à tokenizer!
Aussi, remplacer l'obsolète char_delimiters_separator avec char_separator:
Veuillez noter qu'il existe également un modèle de l'incompatibilité de paramètre: c'est une bonne habitude à la définition de type de ces types complexes: de sorte que la version finale pourrait être:
aussi, Maintenant, ma sortie sépare par des virgules ET des espaces,je veux ignorer les espaces et je ne veux pas mettre la virgule dans le résultat (voir la mise à jour de la question ci-dessus)...
au lieu de
typedef
ing choses juste pour utiliser des itérateurs vous pouvez utiliserauto
en fait, vous ne pouvez pas.
auto
est valable uniquement en c++11OriginalL'auteur CapelliC