Maison > développement back-end > C++ > Comment puis-je séparer efficacement les chaînes délimitées par des virgules en C à l'aide de stringstream ?

Comment puis-je séparer efficacement les chaînes délimitées par des virgules en C à l'aide de stringstream ?

Barbara Streisand
Libérer: 2024-11-23 07:18:16
original
281 Les gens l'ont consulté

How Can I Efficiently Separate Comma-Delimited Strings in C   Using stringstream?

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());
}
Copier après la connexion

Sortie :

abc
def,ghi
Copier après la connexion

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';
}
Copier après la connexion

Sortie :

abc
def
ghi
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal