"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment tokeniser un `std::string` avec des fonctions C ?

Comment tokeniser un `std::string` avec des fonctions C ?

Publié le 2024-11-10
Parcourir:408

How to Tokenize a `std::string` with C Functions?

Tokenisation de std::string avec des fonctions C

Tokenisation d'une chaîne est une opération fondamentale en programmation. Cependant, lorsque vous travaillez avec des fonctions C comme strtok(), qui nécessitent une chaîne char*, la tokenisation directe d'un std::string peut être confrontée à des défis.

strtok() avec std::string

Pour utiliser strtok() avec un std::string, une option consiste à le convertir en const char* en utilisant .c_str(). Cependant, cela n'est pas toujours souhaitable, car cela fournit une représentation en lecture seule de la chaîne.

Approches alternatives

Une solution plus appropriée consiste à exploiter std::istringstream au lieu de strtok( ). std::istringstream permet la tokenisation basée sur le flux d'un std::string. Voici un exemple :

#include 
#include 
#include 

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

    while (std::getline(iss, token, '-')) {
        std::cout 

Ce code crée un std::istringstream à partir de la std::string et en lit les jetons jusqu'à ce qu'il rencontre le délimiteur spécifié ('-' dans ce cas).

Options supplémentaires

Pour des capacités de tokenisation plus avancées, des bibliothèques comme Boost fournissent des solutions complètes qui offrent une plus grande flexibilité et des fonctionnalités par rapport à strtok().

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3