Je veux utiliser String Tokenizer pour la chaîne de CPP, mais tout ce que je pouvais trouver, c'était pour Char *. Y a-t-il quelque chose de similaire pour CPP String? P>
5 Réponses :
Consultez les algos stl comme wind_first_of em>, recherche_first_not_of em> et ainsi de suite pour créer une personnalisée. P>
Vous pouvez faire comme dit par chubsdad ou utiliser Boost tokenizer: http://www.boost.org/doc/libs/1_44_0/libs/Tokenizer/tokenizer.htm P>
Le faire par vous-même n'est pas si compliqué si vous êtes attaqué par boost. p>
Que voulez-vous dire par "jeton"? Si c'est quelque chose de séparé par tout blancheur em>, les flux de chaîne sont ce que vous voulez: alternativement, si vous recherchez un certain caractère de séparation unique, vous pouvez remplacer < Code> ISS >> jeton code> avec Si c'est plus d'un caractère pouvant agir en tant que séparateur (et si ce n'est pas des espaces bleus), une combinaison de std :: getline (ISS, jeton, sep_char) code>. P>
std :: string :: recherche_first () code> et
et
std :: string :: substr () code> devrait faire. p> p>
Existe-t-il une bonne raison de préférer pour (;;) code> sur
tandis que (ISS >> jeton) code> (supposant
jeton code> a été déclaré avant la boucle) ? Dans cet exemple, ce serait une ligne plus courte et, à mon avis, du moins pas moins lisible.
@ Space_C0WB0Y: (Je compris seulement votre commentaire. Eh bien, au moins je pense que je pense que je préfère ...) Je préfère simplement préférer une variable plus locale sur la contrainte du pendant code> boucle.
@SBI Vous pouvez utiliser une boucle comme ceci: pour (jeton de cordes; ISS >> jeton;) {...} code> Pour vous débarrasser de la déclaration IF et avoir toujours une variable localisée.
@erlc qui semble en effet meilleur que ma solution. Bonne idée! (Je modifierais ma réponse, mais c'est une douleur à faire au téléphone. N'hésitez pas à le faire vous-même, si vous voulez.)
Essayez cet extrait que j'ai trouvé quelque part (peut-être même ici?):
Que diriez-vous de certains des exemples à partir des éléments suivants: codeProject.com/kb/recipes/tokenizer. Aspx Ils sont très efficaces et un peu élégants. La bibliothèque Toolkit String facilite le traitement des chaînes complexes simples et faciles en C ++.
Dupliqué possible de Utiliser Strtok avec une STD :: String