Séparation de chaînes délimitées par des virgules à l'aide de Stringstream
En C , stringstream est un outil puissant pour manipuler des chaînes et extraire des données. Bien qu'il puisse facilement séparer les chaînes délimitées par des espaces, les chaînes séparées par des virgules nécessitent une approche légèrement modifiée.
Approche originale :
Le code suivant démontre l'approche originale utilisant stringstream séparer les chaînes par space :
std::string str = "abc def,ghi"; std::stringstream ss(str); string token; while (ss >> token) { printf("%s\n", token.c_str()); }
Sortie :
abc def,ghi
Cette approche ne parvient pas à séparer les jetons séparés par des virgules car le >> L'opérateur dans stringstream suppose des espaces comme délimiteurs.
Approche modifiée :
Pour séparer les chaînes délimitées par des virgules, nous pouvons utiliser la fonction getline() fournie par stringstream. Cette fonction nous permet de lire une chaîne jusqu'à ce qu'un délimiteur spécifié soit rencontré. Voici le code modifié :
#include <iostream> #include <sstream> std::string input = "abc,def,ghi"; std::istringstream ss(input); std::string token; while(std::getline(ss, token, ',')) { std::cout << token << '\n'; }
Sortie :
abc def ghi
Explication :
La fonction getline() lit la chaîne d'entrée ss et extrait un jeton jusqu'à la première occurrence du caractère que nous spécifions comme délimiteur (ici, c'est une virgule). Il attribue ensuite le jeton extrait à la chaîne de jetons et renvoie vrai en cas de succès. En appelant getline() à plusieurs reprises, nous pouvons parcourir les jetons séparés par des virgules dans la chaîne d'entrée.
Cette approche sépare efficacement les chaînes délimitées par des virgules en jetons individuels, permettant un traitement ou une manipulation ultérieurs au sein de votre programme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!