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