Namensräume
Varianten
Aktionen

std::wcstok

Von cppreference.com
< cpp‎ | string‎ | wide
 
 
 
 
Definiert in Header <cwchar>
wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr);

Findet das nächste Token in einer null-terminierten Wide-String-Zeichenkette, auf die von str gezeigt wird. Die Trennzeichen werden durch die null-terminierte Wide-String-Zeichenkette identifiziert, auf die von delim gezeigt wird.

Diese Funktion ist so konzipiert, dass sie mehrmals aufgerufen werden kann, um aufeinanderfolgende Tokens aus derselben Zeichenkette zu erhalten.
  • Wenn str != nullptr ist, wird der Aufruf als erster Aufruf von std::wcstok für diese spezielle Wide-String-Zeichenkette behandelt. Die Funktion sucht nach dem ersten Wide-Zeichen, das nicht in delim enthalten ist.
  • Wenn kein solches Wide-Zeichen gefunden wird, gibt es überhaupt keine Tokens in str, und die Funktion gibt einen Nullzeiger zurück.
  • Wenn ein solches Wide-Zeichen gefunden wird, ist es der Anfang des Tokens. Die Funktion sucht dann von diesem Punkt aus nach dem ersten Wide-Zeichen, das in delim enthalten ist.
  • Wenn kein solches Wide-Zeichen gefunden wird, hat str nur ein Token, und zukünftige Aufrufe von std::wcstok geben einen Nullzeiger zurück.
  • Wenn ein solches Wide-Zeichen gefunden wird, wird es durch das Null-Wide-Zeichen L'\0' ersetzt, und der Parser-Status (typischerweise ein Zeiger auf das folgende Wide-Zeichen) wird an der vom Benutzer bereitgestellten Stelle *ptr gespeichert.
  • Die Funktion gibt dann den Zeiger auf den Anfang des Tokens zurück.
  • Wenn str == nullptr ist, wird der Aufruf als nachfolgender Aufruf von std::wcstok behandelt: Die Funktion fährt dort fort, wo sie in der vorherigen Ausführung mit demselben *ptr aufgehört hat. Das Verhalten ist dasselbe, als ob der Zeiger auf das Wide-Zeichen, das auf das zuletzt erkannte Token folgt, als str übergeben würde.

Inhalt

[edit] Parameter

str - Zeiger auf die null-terminierte Wide-String-Zeichenkette, die tokenisiert werden soll
delim - Zeiger auf die null-terminierte Wide-String-Zeichenkette, die Trennzeichen identifiziert
ptr - Zeiger auf ein Objekt vom Typ wchar_t*, das von wcstok zum Speichern seines internen Zustands verwendet wird

[edit] Rückgabewert

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

[edit] Hinweis

Diese Funktion ist destruktiv: Sie schreibt die Zeichen L'\0' in die Elemente der Zeichenkette 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-Status an der vom Benutzer bereitgestellten Stelle.

Im Gegensatz zu den meisten anderen Tokenizern können die Trennzeichen in std::wcstok für jedes aufeinanderfolgende Token unterschiedlich sein und sogar vom Inhalt der vorherigen Tokens abhängen.

[edit] 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

[edit] Siehe auch

findet das nächste Token in einem Byte-String
(Funktion) [bearbeiten]
C-Dokumentation für wcstok