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
Susan Sarandonoriginal
2024-11-08 16:19:02698parcourir

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;
}

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!

Déclaration:
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