wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t** ptr );
(since C95)wchar_t* wcstok( wchar_t* restrict str, const wchar_t* restrict delim,
wchar_t** restrict ptr );
wchar_t* wcstok_s( wchar_t* restrict str, rsize_t* restrict strmax,
const wchar_t* restrict delim, wchar_t** restrict ptr);
1) Finds the next token in a null-terminated wide string pointed to by str. The separator characters are identified by null-terminated wide string pointed to by delim.
This function is designed to be called multiples times to obtain successive tokens from the same string.
wcstok
for this particular wide string. The function searches for the first wide character which is not contained in delim.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 as str.Same as
(1), except that on every step, writes the number of characters left to see in
strinto
*strmax. Repeat calls (with null
str) must pass both
strmaxand
ptrwith the values stored by the previous call. Also, the following errors are detected at runtime and call the currently installed
constraint handlerfunction, without storing anything in the object pointed to by
ptrwcstok_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 constant 1 before including <wchar.h>.
wcstok
and wcstok_s
to store the internal state of the parser strmax - pointer to an object which initially holds the size of str: wcstok_s stores the number of characters that remain to be examined [edit] Return value
Returns pointer to the beginning of the next token or null pointer if there are no more tokens.
[edit] NoteThis function is destructive: it writes the L'\0' characters in the elements of the string str. In particular, a wide string literal cannot be used as the first argument of wcstok
.
Unlike strtok, wcstok
does not update static storage: it stores the parser state in the user-provided location.
Unlike most other tokenizers, the delimiters in wcstok
can be different for each subsequent token, and can even depend on the contents of the previous tokens.
The implementation of wcstok_s in the Windows CRT is incompatible with the C standard, it is merely an alias for wcstok.
[edit] Example#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' A bird came down the walk Contents of the input string now: 'A\0bird\0came\0down\0the\0walk\0'[edit] References
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4