Split chaîne c++ boost?
Donné une chaîne telle que "John Doe , etats-unis , de sexe Masculin" comment pourrais-je aller sur le fractionnement de la chaîne avec la virgule comme séparateur. Actuellement j'utilise la bibliothèque boost et j'ai réussi à split, mais le blanc de l'espacement des causes des problèmes.
Par exemple au-dessus de la chaîne une fois divisé en un seul vecteur contient "John" et pas le reste.
Mise à JOUR
Voici le code, je travaille avec la mesure
displayMsg(line);
displayMsg(std::string("Enter your details like so David Smith , USA, Male OR q to cancel"));
displayMsg(line);
std::cin >> res;
std::vector<std::string> details;
boost::split(details, res , boost::is_any_of(","));
//If I iterate through the vector there is only one element "John" and not all ?
Après itération-je obtenir seulement le prénom et pas plus de détails
Quelle est la valeur de
J'ai mis à jour la question. Aussi je reçois taille 1
Quel est votre avis?
details.size()
? après l'appel de boost::split
?J'ai mis à jour la question. Aussi je reçois taille 1
Quel est votre avis?
OriginalL'auteur MrSSS16 | 2014-01-04
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Puisque vous êtes la lecture de cin il sera, par nature, arrêter de lire quand vous entrez un espace. Il est lu comme un arrêt. Puisque vous êtes en train de lire une chaîne de caractères une meilleure façon de traiter cette question est d'utiliser std::getline
La sortie est comme suit:
Bien que vous pourriez vouloir dépouiller les espaces.
J'ai mis à jour la réponse à refléter la mise à jour de votre question.
OriginalL'auteur Majii
En fait, vous pouvez le faire sans coup de pouce.
OriginalL'auteur jfly