Spec-Zone.ru › C++

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

См. также

strtok
находит следующий токен в строке байтов
(функция)
Документация C для wcstok

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/wide/wcstok

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API