Maison > développement back-end > C++ > Comment puis-je analyser efficacement les jetons de chaîne en C ?

Comment puis-je analyser efficacement les jetons de chaîne en C ?

Barbara Streisand
Libérer: 2024-11-14 11:28:02
original
1028 Les gens l'ont consulté

How Can I Efficiently Parse String Tokens in C  ?

Analyser efficacement les jetons de chaîne en C

Pour diviser efficacement une chaîne en jetons séparés par un délimiteur spécifique, C propose des mécanismes robustes. Par exemple, si votre chaîne est composée de mots séparés par des points-virgules (;), vous pouvez utiliser les stratégies suivantes :

Utiliser std::getline()

Le std La fonction ::getline() fournit une approche simple mais polyvalente. Il peut traiter tout type de délimiteur, ce qui le rend adapté à la fois à l'extraction de lignes et de jetons. Voici un exemple :

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

using namespace std;

int main() {
    vector<string> strings;
    istringstream f("denmark;sweden;india;us");
    string s;    
    while (getline(f, s, ';')) {
        cout << s << endl;
        strings.push_back(s);
    }
}
Copier après la connexion

Ce code initialise une chaîne et un vecteur. Il utilise ensuite getline() pour parcourir la chaîne, en la divisant à chaque point-virgule. Chaque jeton est imprimé et ajouté au vecteur.

Fonction de fractionnement personnalisée

Vous pouvez également créer une fonction personnalisée pour gérer la tokenisation :

#include <string>
#include <vector>

using namespace std;

vector<string> split(const string& str, char delimiter) {
    vector<string> tokens;
    string token;
    istringstream iss(str);
    while (getline(iss, token, delimiter)) {
        tokens.push_back(token);
    }
    return tokens;
}
Copier après la connexion

Cette fonction prend une chaîne et un délimiteur en entrée et renvoie un vecteur de jetons. Il fonctionne de la même manière que getline(), mais offre la possibilité d'utiliser n'importe quel délimiteur.

Considérations supplémentaires

Lorsque vous travaillez avec des chaînes, il est crucial de respecter les consignes de sécurité. Les fonctions de chaîne de style C et les bibliothèques open source comme Boost peuvent avoir des implications en matière de sécurité. Par conséquent, il est recommandé de s'appuyer sur des fonctions C standard telles que std::getline() ou d'implémenter une logique de fractionnement personnalisée.

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