Tokenisierung eines C-Strings mit strtok()
Um einen String mit strtok() mit einem std::string zu tokenisieren, muss man ihn konvertieren es in einen String im C-Stil umwandeln (char). Allerdings kann die direkte Konvertierung eines std::string in ein const char mit str.c_str() zu Fehlern führen.
Lösung 1: Verwendung eines istringstream
Ein alternativer Ansatz besteht darin, einen istringstream zum Lesen aus std::string zu verwenden. Hier ist ein Beispiel:
#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; }
Diese Methode durchläuft einfach den istringstream und teilt die Zeichenfolge basierend auf dem in getline() angegebenen Trennzeichen in Token auf.
Lösung 2: Verwenden von Boost Toolkit
Alternativ kann man die Tokenizer-Klasse des Boost-Toolkits für mehr Flexibilität und Kontrolle über die Tokenisierungsparameter verwenden. Hier ist ein Beispiel mit 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; }
Das obige ist der detaillierte Inhalt vonWie tokenisiere ich einen C-String mit strtok() ohne Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!