„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie tokenisiert man einen „std::string“ mit C-Funktionen?

Wie tokenisiert man einen „std::string“ mit C-Funktionen?

Veröffentlicht am 10.11.2024
Durchsuche:598

How to Tokenize a `std::string` with C Functions?

Tokenisieren von std::string mit C-Funktionen

Tokenisieren eines Strings ist eine grundlegende Operation in der Programmierung. Wenn Sie jedoch mit C-Funktionen wie strtok() arbeiten, die einen char*-String erfordern, kann die direkte Tokenisierung eines std::string mit Herausforderungen konfrontiert werden.

strtok() mit std::string

Um strtok() mit einem std::string zu verwenden, besteht eine Möglichkeit darin, ihn mit .c_str() in ein const char* umzuwandeln. Dies ist jedoch möglicherweise nicht immer wünschenswert, da es eine schreibgeschützte Darstellung der Zeichenfolge bietet.

Alternative Ansätze

Eine geeignetere Lösung ist die Nutzung von std::istringstream anstelle von strtok( ). std::istringstream ermöglicht die Stream-basierte Tokenisierung eines std::string. Hier ist ein Beispiel:

#include 
#include 
#include 

int main() {
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;

    while (std::getline(iss, token, '-')) {
        std::cout 

Dieser Code erstellt einen std::istringstream aus dem std::string und liest Token daraus, bis er auf das angegebene Trennzeichen trifft (in diesem Fall „-“).

Zusätzliche Optionen

Für erweiterte Tokenisierungsfunktionen bieten Bibliotheken wie Boost umfassende Lösungen, die im Vergleich zu strtok() mehr Flexibilität und Funktionen bieten.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3