mbrtowc(3)

ИМЯ
mbrtowc - преобразовывает мультибайтовую последовательность в широкий символ

LIBRARY
Standard C library (libc, -lc)

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

size_t mbrtowc(wchar_t *restrict pwc, const char s[restrict .n],
               size_t n, mbstate_t *restrict ps);

ОПИСАНИЕ
The main case for this function is when s is not NULL and pwc is not NULL. In this case, the mbrtowc() function inspects at most n bytes of the multibyte string starting at s, extracts the next complete multibyte character, converts it to a wide character and stores it at *pwc. It updates the shift state *ps. If the converted wide character is not L'\0' (the null wide character), it returns the number of bytes that were consumed from s. If the converted wide character is L'\0', it resets the shift state *ps to the initial state and returns 0.

Если в n байтах, начиная с s, не содержится полного многобайтового символа, то mbrtowc() возвращает (size_t) -2. Это может произойти даже, если n >= MB_CUR_MAX, если в многобайтовой строке содержится лишние сдвиговые последовательности.

Если многобайтовая строка, начинающаяся с s, содержит некорректную многобайтовую последовательность до следующего полного символа, то mbrtowc() возвращает (size_t) -1 и присваивает errno значение EILSEQ. В этом случае влияние на *ps не определено.

Ещё случай, когда s не равно NULL, а pwc равно NULL. В этом случае функция mbrtowc() действует как описано выше, но не сохраняет преобразованный широкий символ в памяти.

И третий случай, когда s равно NULL. В этом случае pwc и n игнорируются. Если состояние преобразования, представляемое *ps означает неполный многобайтовый символ, то функция mbrtowc() возвращает (size_t) -1, присваивает errno значение EILSEQ и оставляет *ps в неопределённом состоянии. Иначе функция mbrtowc() изменяет *ps в начальное состояние и возвращает 0.

Во всех вышеперечисленных случаях, если ps равно NULL, то используется статическое анонимное состояние, известное только функции mbrtowc(). Иначе *ps должен быть корректным объектом mbstate_t. Объект mbstate_t a может быть переведён в начальное состояние, если его обнулить, например с помощью

    memset(&a, 0, sizeof(a));

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
The mbrtowc() function returns the number of bytes parsed from the multibyte sequence starting at s, if a non-L'\0' wide character was recognized. It returns 0, if a L'\0' wide character was recognized. It returns (size_t) -1 and sets errno to EILSEQ, if an invalid multibyte sequence was encountered. It returns (size_t) -2 if it couldn't parse a complete multibyte character, meaning that n should be increased.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
mbrtowc() | Безвредность в нитях | MT-Unsafe race:mbrtowc/!ps

СТАНДАРТЫ
C11, POSIX.1-2008.

ИСТОРИЯ
POSIX.1-2001, C99.

ЗАМЕЧАНИЯ
Поведение mbrtowc() зависит от категории LC_CTYPE текущей локали.

СМ. ТАКЖЕ
mbsinit(3), mbsrtowcs(3)

ПЕРЕВОД
Русский перевод этой страницы руководства был сделан aereiae <aereiae@gmail.com>, Alexey <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, ITriskTI <ITriskTI@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Малянов Евгений Викторович <maljanow@outlook.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 (https://www.gnu.org/licenses/gpl-3.0.html) или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.