std::wcstok
Определено в заголовке <cwchar> | ||
|---|---|---|
wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr); |
Находит следующий токен в строке с нулевым окончанием, на которую указывает str. Разделительные символы определяются строкой с нулевым окончанием, на которую указывает delim.
- Если
str != nullptr, вызов обрабатывается как первый вызовstd::wcstokдля этой конкретной строки. Функция ищет первый символ широкой строки, который не содержится вdelim. - Если такой символ широкой строки не найден, в
strнет токенов вообще, и функция возвращает нулевой указатель. - Если такой символ широкой строки найден, он является началом токена. Затем функция ищет с этой точки первый символ широкой строки, который содержится в
delim. - Если такой символ широкой строки не найден, у
strесть только один токен, и последующие вызовыstd::wcstokбудут возвращать нулевой указатель. - Если такой символ широкой строки найден, он заменяется нулевым символом широкой строки
L'\0', и состояние анализатора (обычно указатель на следующий символ широкой строки) сохраняется в предоставленном пользователем месте*ptr. - Затем функция возвращает указатель на начало токена.
- Если
str == nullptr, вызов обрабатывается как последующие вызовыstd::wcstok: функция продолжает оттуда, где остановилась в предыдущем вызове, с тем же*ptr. Поведение такое же, как если бы в качествеstrпередавался указатель на символ широкой строки, который следует за последним обнаруженным токеном.
Параметры
| str | - | указатель на строку с нулевым окончанием, подлежащую разбиению на токены |
| delim | - | указатель на строку с нулевым окончанием, определяющую разделители |
| ptr | - | указатель на объект типа wchar_t*, который используется wcstok для хранения внутреннего состояния |
Возвращаемое значение
Указатель на начало следующего токена или нулевой указатель, если больше нет токенов.
Примечание
Эта функция разрушает данные: она записывает L'\0' символы в элементы строки str. В частности, строковая константа широкой строки не может использоваться в качестве первого аргумента std::wcstok.
В отличие от std::strtok, эта функция не обновляет статическое хранилище: она сохраняет состояние анализатора в предоставленном пользователем месте.
В отличие от большинства других разделителей токенов, разделители в std::wcstok могут отличаться для каждого последующего токена и даже зависеть от содержимого предыдущих токенов.
Пример
#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);
}
}Вывод:
A bird came down the walk
См. также
| находит следующий токен в строке байтов (функция) |
|
Документация C для wcstok |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/wide/wcstok