Пространства имён
Варианты
Действия

std::wcstok

Материал из cppreference.com
< cpp‎ | string‎ | wide
 
 
 
 
Определено в заголовочном файле <cwchar>
wchar_t* wcstok(wchar_t* str, constwchar_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"Птица спустилась по дорожке";wchar_t* buffer;std::wcout.imbue(std::locale("en_US.utf8"));wchar_t* token = std::wcstok(input, L" ", &buffer);while(token){std::wcout<< token <<'\n'; token = std::wcstok(nullptr, L" ", &buffer);}}

Вывод:

Птица спустилась по дорожке

[править]Смотрите также

находит следующий маркер в строке байтов
(функция)[править]
close