Heim  >  Artikel  >  Backend-Entwicklung  >  Wie tokenisiert man einen „std::string“ ohne Verwendung von „strtok()“?

Wie tokenisiert man einen „std::string“ ohne Verwendung von „strtok()“?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 18:34:03908Durchsuche

How to Tokenize a `std::string` Without Using `strtok()`?

Tokenisieren eines std::string mit strtok

Tokenisieren eines std::string kann mit verschiedenen Methoden erfolgen. Ein gängiger Ansatz ist die Verwendung der C-Funktion strtok(), die ein Zeichenarray als Eingabe verwendet und es basierend auf einem angegebenen Trennzeichen in Token aufteilt. Allerdings können std::string-Objekte nicht direkt an strtok() übergeben werden, da sie nicht auf ein Zeichenarray verweisen.

Um diese Einschränkung zu überwinden, können wir eine alternative Methode verwenden, um den std::string zu tokenisieren. Eine solche Methode ist die Verwendung eines istringstream-Objekts, das durch Übergabe von std::string an seinen Konstruktor erstellt werden kann. Das istringstream-Objekt kann dann verwendet werden, um Tokens aus der Zeichenfolge mithilfe der Funktion getline() zu lesen, die als zweites Argument ein Trennzeichen verwendet.

#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 das istringstream-Objekt zum Lesen verwendet std::string „some-text-to-tokenize“ in eine Reihe von Tokens, getrennt durch das Zeichen „-“. Die Funktion getline() wird verwendet, um jedes Token aus der Zeichenfolge zu extrahieren, und die Token werden dann auf der Konsole ausgegeben.

Eine Alternative zur Verwendung eines istringstream ist die Verwendung eines Dienstprogramms wie Boost.Tokenizer, das Folgendes bereitstellt ein flexiblerer und anpassbarerer Ansatz zur Tokenisierung von Zeichenfolgen. Der istringstream-Ansatz reicht jedoch im Allgemeinen für grundlegende Tokenisierungsanforderungen aus.

Das obige ist der detaillierte Inhalt vonWie tokenisiert man einen „std::string“ ohne Verwendung von „strtok()“?. 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