Bei der Arbeit mit C ist es oft wünschenswert, Strings zu tokenisieren und sie basierend auf a in kleinere Teilstrings oder Token aufzuteilen Trennzeichen. Die C-Funktion strtok() ist eine beliebte Option zum Tokenisieren von Zeichenfolgen, erfordert jedoch eine char*-Eingabe, während std::string der bevorzugte Zeichenfolgentyp in C ist. In diesem Artikel wird eine Problemumgehung für die Verwendung von strtok() für einen std::string untersucht.
Ein Ansatz besteht darin, ein istringstream-Objekt zu verwenden, um den std::string in zu konvertieren ein Zeichenstrom, der dann von strtok() tokenisiert werden kann. Zum 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; }
In diesem Beispiel wird der isstringstream iss aus dem std::string myText erstellt. Anschließend wird die Funktion std::getline verwendet, um Token aus dem Stream zu extrahieren, wobei das Trennzeichen „-“ als Trennzeichen verwendet wird. Jedes Token wird mit std::cout auf der Konsole gedruckt.
Eine weitere in der Antwort erwähnte Option ist die Verwendung der Boost-Bibliothek, die flexiblere Tokenisierungsfunktionen bietet. Für diese Lösung muss jedoch die Boost-Bibliothek auf dem System installiert sein.
Das obige ist der detaillierte Inhalt vonWie kann ich einen std::string mit strtok() in C tokenisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!