WCSTOK(3) | Руководство программиста Linux | WCSTOK(3) |
wcstok - разделяет широкосимвольную строку на элементы (токены)
#include <wchar.h>
wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);
Функция wcstok() является эквивалентом функции strtok(3) для широкосимвольных строк, но к ней добавлен аргумент для поддержки работы в нитях. Она может использоваться для разбиения широкосимвольной строки wcs на элементы, где элементом считается подстрока, не включающая в себя широкие символы из строки delim.
Поиск начинается с wcs, если wcs не равно NULL, или с *ptr, если значение wcs равно NULL. Сначала пропускаются все разграничительные широкие символы, т.е. указатель «перепрыгивает» через все широкие символы, которые встречаются в delim. Достигнув конца строки, wcstok() возвращает NULL, тем самым сообщая, что не было найдено ни одного элемента, и сохраняет соответствующее значение в *ptr. Таким образом, последующие вызовы wcstok() будут возвращать NULL. В противном случае функция wcstok() распознает начало элемента и возвращает указатель на него, но перед тем, как это сделать, она завершает нулём найденный элемент, заменяя следующий широкий символ, который встретился в delim, на символ L'\0' и обновляет *ptr так, что последующие вызовы будут продолжать поиск после найденного элемента.
Функция wcstok() возвращает указатель на следующий элемент или NULL, если больше элементов не найдено.
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
wcstok() | Безвредность в нитях | MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
Исходная широкосимвольная строка 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)) { ... }
2019-03-06 | GNU |