Maison >développement back-end >C++ >Comment puis-je tokeniser un std::string en utilisant strtok() en C ?
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.
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.
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!