|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <wchar.h> | ||
| (1) | ||
wchar_t* wcstok(wchar_t* str,constwchar_t* delim,wchar_t** ptr); | (since C95) (until C99) | |
wchar_t* wcstok(wchar_t* restrict str,constwchar_t*restrict delim, wchar_t**restrict ptr); | (since C99) | |
wchar_t* wcstok_s(wchar_t*restrict str, rsize_t*restrict strmax, constwchar_t*restrict delim,wchar_t**restrict ptr); | (2) | (since C11) |
wcstok for this particular wide string. The function searches for the first wide character which isnot contained indelim.wcstok will return a null pointerwcstok: the function continues from where it left in the previous invocation with the same*ptr. The behavior is the same as if the pointer to the wide character that follows the last detected token is passed asstr.wcstok_s is only guaranteed to be available if__STDC_LIB_EXT1__ is defined by the implementation and if the user defines__STDC_WANT_LIB_EXT1__ to the integer constant1 before including<wchar.h>.Contents |
| str | - | pointer to the null-terminated wide string to tokenize |
| delim | - | pointer to the null-terminated wide string identifying delimiters |
| ptr | - | pointer to an object of typewchar_t*, which is used by bothwcstok andwcstok_s to store the internal state of the parser |
| strmax | - | pointer to an object which initially holds the size ofstr: wcstok_s stores the number of characters that remain to be examined |
Returns pointer to the beginning of the next token or null pointer if there are no more tokens.
This function is destructive: it writes theL'\0' characters in the elements of the stringstr. In particular, a wide string literal cannot be used as the first argument ofwcstok.
Unlikestrtok,wcstok does not update static storage: it stores the parser state in the user-provided location.
Unlike most other tokenizers, the delimiters inwcstok can be different for each subsequent token, and can even depend on the contents of the previous tokens.
The implementation ofwcstok_s in theWindows CRT is incompatible with the C standard, it is merely an alias forwcstok.
#include <stdio.h>#include <wchar.h> int main(void){wchar_t input[]= L"A bird came down the walk";printf("Parsing the input string '%ls'\n", input);wchar_t* buffer;wchar_t* token= wcstok(input, L" ",&buffer);while(token){printf("%ls\n", token); token= wcstok(NULL, L" ",&buffer);} printf("Contents of the input string now: '");for(size_t n=0; n<sizeof input/sizeof*input;++n) input[n]?printf("%lc", input[n]):printf("\\0");puts("'");}
Output:
Parsing the input string 'A bird came down the walk'AbirdcamedownthewalkContents of the input string now: 'A\0bird\0came\0down\0the\0walk\0'
(C11) | finds the next token in a byte string (function)[edit] |
C++ documentation forwcstok | |