Heim >Backend-Entwicklung >C++ >Wie kann ich einen std::string mit strtok() in C tokenisieren?

Wie kann ich einen std::string mit strtok() in C tokenisieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-08 16:19:02696Durchsuche

How can I tokenize a std::string using strtok() in C  ?

Tokenisieren eines std::string mit strtok()

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.

Verwendung eines Istringstreams für die Tokenisierung

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.

Alternative Ansätze

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn