std::wcstok(3)
β¨ std::wcstok(3) β¨
okay so bestie, we're chilling in the C++ Standard Libary manual, and this page is all about std::wcstok β the wide-string tokenizer. It's giving "call me multiple times and I'll keep track of where we are" energy. π
πΈ NAME πΈ
std::wcstok β literally the name, periodt. It finds tokens in a null-terminated wide string.
π Synopsis π
Defined in header <cwchar>.
wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr);
Finds the next token in a null-terminated wide string pointed to by str. The separator characters are identified by the null-terminated wide string pointed to by delim.
This function is designed to be called multiple times to obtain successive tokens from the same string. The way it works is lowkey stateful β slay, but pay attention:
- If
str != nullptr, the call is treated as the first call tostd::wcstokfor this particular wide string. The function searches for the first wide character which is not contained indelim.- If no such wide character was found, there are no tokens in
strat 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,
strhas only one token, and future calls tostd::wcstokwill 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.
- If no such wide character was found,
- If no such wide character was found, there are no tokens in
- If
str == nullptr, the call is treated as a subsequent call tostd::wcstok: 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.
π 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 typewchar_t*, which is used bywcstokto store its internal state.
π«Ά Return value π«Ά
Pointer to the beginning of the next token or null pointer if there are no more tokens. That's the whole return vibe, fr fr. β¨
π Note π
ngl, 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 std::wcstok.
Unlike std::strtok, this function does not update static storage: it stores the parser state in the user-provided location.
Unlike most other tokenizers, the delimiters in std::wcstok can be different for each subsequent token, and can even depend on the contents of the previous tokens. Highkey iconic, but also a little unhinged. π«Ά
π§ Example π§
run this code, bestie β it ate and left no crumbs:
// Run this code
#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);
}
}
π Output π
A
bird
came
down
the
walk
π See also π
strtokβ finds the next token in a byte string. It's a function.- C documentation for
wcstok.
okay bestie, that's the whole page β source: http://cppreference.com, version/date: 2024.06.10, and the manual page is std::wcstok(3). mwah π
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms