A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/algorithm/../algorithm/../../cpp/../c/string/wide/wcstok.html below:

wcstok, wcstok_s - cppreference.com

(1)

wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t** ptr );

(since C95)
(until C99)

wchar_t* wcstok( wchar_t*  restrict str, const wchar_t* restrict delim,
                 wchar_t** restrict ptr );

(since C99)

wchar_t* wcstok_s( wchar_t* restrict str, rsize_t* restrict strmax,
                   const wchar_t* restrict delim, wchar_t** restrict ptr);

(2) (since C11)

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.

  • If no such wide character was found, there are no tokens in str at all, and the function returns a null pointer.
  • If such wide character was found, it is the beginning of the token. The function then searches from that point on for the first wide character that is contained in delim.
  • If no such wide character was found, str has only one token, and future calls to wcstok will return a null pointer
  • If such wide character was found, it is replaced by the null wide character L'\0' and the parser state (typically a pointer to the following wide character) is stored in the user-provided location *ptr.
  • The function then returns the pointer to the beginning of the token
2)

Same as

(1)

, except that on every step, writes the number of characters left to see in

str

into

*strmax

. Repeat calls (with null

str

) must pass both

strmax

and

ptr

with the values stored by the previous call. Also, the following errors are detected at runtime and call the currently installed

constraint handler

function, without storing anything in the object pointed to by

ptr
As all bounds-checked functions, 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 constant 1 before including <wchar.h>.
[edit] Parameters 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 type wchar_t*, which is used by both 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] Note

This 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
[edit] See also

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