Maison > développement back-end > C++ > Comment puis-je extraire efficacement des entiers d'une chaîne séparée par des virgules en C ?

Comment puis-je extraire efficacement des entiers d'une chaîne séparée par des virgules en C ?

Mary-Kate Olsen
Libérer: 2024-12-29 10:02:09
original
707 Les gens l'ont consulté

How Can I Efficiently Extract Integers from a Comma-Separated String in C  ?

Extraire des données numériques à partir de chaînes délimitées par des virgules en C

L'analyse de données à partir de chaînes séparées par des virgules dans des tableaux numériques présente un défi courant en programmation . Pour le cas spécifique des nombres entiers, C propose plusieurs approches simples.

Algorithme d'analyse de base :

Une méthode simple consiste à parcourir la chaîne caractère par caractère. Pour chaque caractère, vérifiez si le caractère suivant est une virgule. Si c'est le cas, supprimez la virgule. Sinon, convertissez le caractère en entier et stockez-le dans le tableau.

Utilisation d'istingstream :

La bibliothèque standard C propose la classe istringstream pour analyser les flux d'entrée. Pour extraire des nombres d'une chaîne délimitée par des virgules, créez un objet istringstream avec la chaîne en entrée. Ensuite, utilisez l'opérateur d'extraction de flux >> pour extraire chaque numéro un à la fois.

Implémentation :

L'extrait de code suivant illustre l'algorithme d'analyse de base utilisant istringstream :

#include <vector>
#include <string>
#include <sstream>
#include <iostream>

int main()
{
    std::string str = "1,2,3,4,5,6";
    std::vector<int> vect;

    std::stringstream ss(str);

    for (int i; ss >> i;) {
        vect.push_back(i);    
        if (ss.peek() == ',')
            ss.ignore();
    }

    for (std::size_t i = 0; i < vect.size(); i++)
        std::cout << vect[i] << std::endl;

    return 0;
}
Copier après la connexion

Autres options :

Pour des scénarios d'analyse plus complexes, le C La bibliothèque standard fournit des options supplémentaires, telles que la fonction strtok et les expressions régulières. Cependant, pour de simples listes d'entiers délimités par des virgules, les méthodes ci-dessus sont généralement suffisantes et simples à mettre en œuvre.

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