Maison > développement back-end > C++ > Comment tokeniser une chaîne C à l'aide de strtok() sans erreurs ?

Comment tokeniser une chaîne C à l'aide de strtok() sans erreurs ?

Mary-Kate Olsen
Libérer: 2024-11-06 13:03:02
original
729 Les gens l'ont consulté

How to Tokenize a C   String Using strtok() Without Errors?

Tokeniser une chaîne C avec strtok()

Pour tokeniser une chaîne en utilisant strtok() avec un std::string, il faut convertir dans une chaîne de style C (char). Cependant, convertir directement un std::string en const char à l'aide de str.c_str() peut entraîner des erreurs.

Solution 1 : Utiliser un istringstream

Une approche alternative consiste à utiliser un istringstream pour lire à partir du std :: string. Voici un 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

Cette méthode boucle simplement sur le flux istring, divisant la chaîne en jetons en fonction du délimiteur spécifié dans getline().

Solution 2 : Utiliser Boost Boîte à outils

Alternativement, on peut utiliser la classe tokenizer de la boîte à outils Boost pour une plus grande flexibilité et un meilleur contrôle sur les paramètres de tokenisation. Voici un exemple utilisant Boost :

#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>

int main() {
    std::string myText("some-text-to-tokenize");
    boost::tokenizer<> tokenizer(myText, "-");
    for (auto token : tokenizer) {
        std::cout << token << std::endl;
    }
    return 0;
}
Copier après la connexion

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