Funkcja wcstok () w C ++ zwraca następny token w szerokim łańcuchu zakończonym znakiem null.
Funkcja wcstok () jest zdefiniowana w pliku nagłówkowym.
prototyp wcstok ()
wchar_t * wcstok (wchar_t * str, const wchar_t * delim, wchar_t ** ptr);
Funkcja wcstok () przyjmuje trzy argumenty: str, delim i ptr. Ta funkcja znajduje token w szerokim łańcuchu wskazywanym przez str. Ogranicznik wskaźnika wskazuje na znaki separatora.
Tę funkcję można wywołać wiele razy, aby uzyskać tokeny z tego samego szerokiego ciągu. Istnieją dwa przypadki:
- Jeśli str nie ma wartości NULL:
wywołanie wcstok () jest uważane za pierwsze wywołanie tego szerokiego ciągu. Funkcja wyszukuje pierwszy szeroki znak, który nie jest zawarty w ograniczniku. Jeśli nie zostanie znaleziony taki szeroki znak, szeroki ciąg nie zawiera żadnego tokenu. Więc zwracany jest pusty wskaźnik.
Jeśli taki szeroki znak zostanie znaleziony, funkcja wyszukuje następnie szeroki znak obecny w delim. Jeśli nie zostanie znaleziony separator, str ma tylko jeden token. Jeśli zostanie znaleziony separator, jest on zastępowany przez L ' 0', a wskaźnik do następującego znaku jest przechowywany w * ptr. Na koniec funkcja zwraca wskaźnik na początek tokenu. - Jeśli str ma wartość NULL:
wywołanie jest traktowane jako kolejne wywołania wcstok, a funkcja jest kontynuowana od miejsca, w którym opuściła w poprzednim wywołaniu, z tym samym * ptr.
wcstok () Parametry
- str: wskaźnik do szerokiego ciągu zakończonego wartością null do tokenizacji.
- delim: Wskaźnik do szerokiego ciągu zakończonego znakiem null, który zawiera separatory.
- ptr: Wskaźnik do wskaźnika do szerokiego znaku, który jest używany przez wcstok do przechowywania swojego stanu wewnętrznego.
wcstok () Wartość zwracana
- Funkcja wcstok () zwraca wskaźnik do początku następnego tokenu, jeśli taki istnieje
- Zwraca NULL, jeśli nie znaleziono więcej tokenów.
Przykład: Jak działa funkcja wcstok ()?
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); wchar_t str() = L"parrot,owl,sparrow,pigeon,crow"; wchar_t delim() = L"u002c";// unicode for comma wchar_t *ptr; wcout << L"The tokens are:" << endl; wchar_t *token = wcstok(str,delim,&ptr); while (token) ( wcout << token << endl; token = wcstok(NULL,delim,&ptr); ) return 0; )
Po uruchomieniu programu wynik będzie następujący:
Żetony to: papuga sowa wróbel gołąb wrona