WCSTOK(3)

НАЗВАНИЕ
wcstok - разделение строки широких символов на элементы (токены)

СИНТАКСИС
#include <wchar.h>

wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);

ОПИСАНИЕ
Функция wcstok является эквивалентом функции strtok для широких символов, но к ней добавлен аргумент для поддержки многопоточности. Она используется для разбиения строки широких символов wcs на элементы, где элемент определен как подстрока, не включающая в себя широкие символы из строки delim.

Поиск начинается с wcs, если wcs не равно NULL; или с *ptr, если wcs равно NULL. Сначала пропускаются все разграничительные широкие символы, т.е. указатель "перепрыгивает" через все широкие символы, которые встречаются в delim. Достигнув конца строки, wcstok возвращает ноль, тем самым сообщая, что не было найдено ни одного элемента, и сохраняет соответствующее значение в *ptr. Таким образом, последующие обращения к wcstok будут возвращать NULL. В противном случае функция wcstok распознает начало элемента и возвращает указатель на него, но перед тем, как это сделать, она завершает нулем элемент путем перемещения следующего широкого символа (который встретился в delim вместе с L'\0' символом) и обновляет *ptr, так что последующие вызовы будут продолжать поиск после найденного элемента.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция wcstok возвращает указатель на следующий элемент или NULL, если больше не найдено элементов.

ЗАМЕЧАНИЯ
Исходная строка широких символов wcs может измениться в процессе работы функции.

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
Следующий код выводит в ходе работы цикла все элементы, содержащиеся в строке широких символов.

wchar_t *wcs = ...;
wchar_t *token;
wchar_t *state;
for (token = wcstok(wcs, " \t\n", &state);
     token != NULL;
     token = wcstok(NULL, " \t\n", &state)) {
  ...
}

СООТВЕТСТВИЕ СТАНДАРТАМ
ISO/ANSI C, UNIX98

СМ. ТАКЖЕ
strtok(3), wcschr(3).