8
votes

Un tokéniseur à chaîne en C ++ qui permet plusieurs séparateurs

Y a-t-il un moyen de goûter une chaîne en C ++ avec plusieurs séparateurs? En C #, j'aurais fait:

string[] tokens = "adsl, dkks; dk".Split(new [] { ",", " ", ";" }, StringSplitOptions.RemoveEmpty);


6 commentaires

@Nick PRESTA: Oui, mais la plupart des questions que j'ai vues impliquent uniquement l'utilisation d'un délimiteur.


Comment est-ce un DUP? On voulait diviser uniquement sur l'espace blanc, cela veut se diviser sur plusieurs délimiteurs.


@Duk: Presque toutes ces réponses peuvent être adaptées pour gérer tous les délimiteurs (la plupart déjà utilisés sur un paramètre). Sauf si vous ne suggérez que nous avons une nouvelle question pour chaque type de délimiteur?


Ne réinventez pas la roue du tout ... Semble mon lien Boost :: Split


@Nick Presta - Assez juste. Je n'ai pas lu toutes les réponses et j'ai trébuché à travers ceux utilisant des ruisseaux pour dépouiller des espaces


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 ++.


3 Réponses :


3
votes

Utilisez Boost :: Tokenizer. Il prend en charge plusieurs séparateurs.

En fait, vous n'avez même pas vraiment besoin de boost :: Tokenizer. Si tout ce que vous voulez, c'est une scission, utilisez Boost :: Split. La documentation présente un exemple: http://www.boost.org/ doc / libs / 1_42_0 / doc / html / string_algo / usage.html # ID1718906


0 commentaires

2
votes

Quelque chose comme ça va faire: xxx


0 commentaires

0
votes

Voici ma version (pas fortement testée (encore)): xxx


0 commentaires