Maison > développement back-end > C++ > Comment puis-je tokeniser un std::string en utilisant strtok() en C ?

Comment puis-je tokeniser un std::string en utilisant strtok() en C ?

Susan Sarandon
Libérer: 2024-11-08 16:19:02
original
706 Les gens l'ont consulté

How can I tokenize a std::string using strtok() in C  ?

Tokenisation d'un std::string avec strtok()

Lorsque vous travaillez avec C , il est souvent souhaitable de tokeniser les chaînes, en les divisant en sous-chaînes ou jetons plus petits en fonction d'un délimiteur. La fonction C strtok() est une option populaire pour la tokenisation des chaînes, mais elle nécessite une entrée char*, tandis que std::string est le type de chaîne préféré en C . Cet article explore une solution de contournement pour utiliser strtok() sur un std::string.

Utilisation d'un Istringstream pour la tokenisation

Une approche consiste à utiliser un objet istringstream pour convertir le std::string en un flux de caractères, qui peut ensuite être tokenisé par strtok(). Par exemple :

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

int main() {
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;

    while (std::getline(iss, token, '-')) {
        std::cout << token << std::endl;
    }

    return 0;
}
Copier après la connexion

Dans cet exemple, l'iss istringstream est construit à partir du std::string myText. La fonction std::getline est ensuite utilisée pour extraire les jetons du flux, en utilisant le caractère délimiteur « - » comme séparateur. Chaque jeton est imprimé sur la console à l'aide de std::cout.

Approches alternatives

Une autre option mentionnée dans la réponse consiste à utiliser la bibliothèque Boost, qui offre des capacités de tokenisation plus flexibles. Cependant, cette solution nécessite que la bibliothèque Boost soit installée sur le système.

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