Namespaces
Variants

std:: wcstok

From cppreference.net
Definiert in Header <cwchar>
wchar_t * wcstok ( wchar_t * str, const wchar_t * delim, wchar_t ** ptr ) ;

Findet das nächste Token in einer nullterminierten Breitzeichen-Zeichenkette, auf die gezeigt wird von str . Die Trennzeichen werden identifiziert durch eine nullterminierte Breitzeichen-Zeichenkette, auf die gezeigt wird von delim .

Diese Funktion ist dafür ausgelegt, mehrfach aufgerufen zu werden, um aufeinanderfolgende Tokens aus derselben Zeichenkette zu erhalten.
  • Falls str ! = nullptr , wird der Aufruf als erster Aufruf von std::wcstok für diese spezifische Breitzeichenkette behandelt. Die Funktion sucht nach dem ersten Breitzeichen, das nicht in delim enthalten ist.
  • Wird kein solches Breitzeichen gefunden, existieren keine Tokens in str und die Funktion gibt einen Nullzeiger zurück.
  • Wird ein solches Breitzeichen gefunden, stellt es den Beginn des Tokens dar. Die Funktion sucht ab diesem Punkt nach dem ersten Breitzeichen, das in delim enthalten ist.
  • Wird kein solches Breitzeichen gefunden, besitzt str nur ein Token und zukünftige Aufrufe von std::wcstok geben einen Nullzeiger zurück.
  • Wird ein solches Breitzeichen gefunden, wird es ersetzt durch das Null-Breitzeichen L ' \0 ' und der Parserzustand (typischerweise ein Zeiger auf das folgende Breitzeichen) wird im benutzerdefinierten Speicherort * ptr gespeichert.
  • Die Funktion gibt dann den Zeiger auf den Beginn des Tokens zurück.
  • Falls str == nullptr , wird der Aufruf als nachfolgender Aufruf von std::wcstok behandelt: Die Funktion setzt an der Stelle fort, an der sie im vorherigen Aufruf mit demselben * ptr aufgehört hat. Das Verhalten entspricht dem, als ob der Zeiger auf das Breitzeichen, das auf das letzte erkannte Token folgt, als str übergeben würde.

Inhaltsverzeichnis

Parameter

str - Zeiger auf die nullterminierte Breitzeichen-Zeichenkette zur Tokenisierung
delim - Zeiger auf die nullterminierte Breitzeichen-Zeichenkette mit Trennzeichen
ptr - Zeiger auf ein Objekt vom Typ wchar_t * , das von wcstok zur Speicherung seines internen Zustands verwendet wird

Rückgabewert

Zeiger auf den Anfang des nächsten Tokens oder Nullzeiger, falls keine weiteren Tokens vorhanden sind.

Hinweis

Diese Funktion ist destruktiv: sie schreibt die L ' \0 ' Zeichen in die Elemente des Strings str . Insbesondere kann ein Wide-String-Literal nicht als erstes Argument von std::wcstok verwendet werden.

Im Gegensatz zu std::strtok aktualisiert diese Funktion keinen statischen Speicher: Sie speichert den Parser-Zustand im benutzerbereitgestellten Speicherort.

Im Gegensatz zu den meisten anderen Tokenizern können die Trennzeichen in std::wcstok für jeden nachfolgenden Token unterschiedlich sein und können sogar von den Inhalten der vorherigen Token abhängen.

Beispiel

#include <cwchar>
#include <iostream>
int main()
{
    wchar_t input[100] = L"A bird came down the walk";
    wchar_t* buffer;
    wchar_t* token = std::wcstok(input, L" ", &buffer);
    while (token)
    {
        std::wcout << token << '\n';
        token = std::wcstok(nullptr, L" ", &buffer);
    }
}

Ausgabe:

A
bird
came
down
the
walk

Siehe auch

findet das nächste Token in einer Byte-Zeichenkette
(Funktion)
C-Dokumentation für wcstok