Heim > Backend-Entwicklung > C++ > Wie tokenisiere ich einen C-String mit strtok() ohne Fehler?

Wie tokenisiere ich einen C-String mit strtok() ohne Fehler?

Mary-Kate Olsen
Freigeben: 2024-11-06 13:03:02
Original
672 Leute haben es durchsucht

How to Tokenize a C   String Using strtok() Without Errors?

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage