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/cpp/string/wide/wcstok