Maison >développement back-end >C++ >Comment tokeniser un `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 rencontrer des défis.
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.
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 <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; } }
Ce code crée un std::istringstream à partir de std::string et en lit les jetons jusqu'à ce qu'il rencontre le délimiteur spécifié ('-' dans ce cas).
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().
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!