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
содержит только один токен, и последующие вызовы
- Затем функция возвращает указатель на начало токена.
-
Если
str
==
nullptr
, вызов рассматривается как последующие вызовы
std::wcstok: функция продолжает с места остановки в предыдущем вызове с тем же * ptr . Поведение аналогично тому, как если бы указатель на широкий символ, следующий за последним обнаруженным токеном, был передан как str .
-
Если
str
!
=
nullptr
, вызов рассматривается как первый вызов
Содержание |
Параметры
| 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 documentation
для
wcstok
|
|