MBSINIT(3) | Руководство программиста Linux | MBSINIT(3) |
mbsinit - проверяет начальное состояние сдвига
#include <wchar.h>
int mbsinit(const mbstate_t *ps);
Преобразование многобайтового представления символов в представление в виде широких символов (и наоборот) происходит с помощью состояния преобразования (тип mbstate_t). Преобразование строк происходит с помощью конечного автомата; если преобразование прерывается после некоторого количества символов, то может потребоваться сохранить состояние для обработки остальных символов. Это состояние преобразования необходимо, к примеру, для кодировок ISO-2022 и UTF-7.
Начальное состояние — это состояние в начале преобразования строки. Есть два типа состояния: первое используется функциями преобразования многобайтовых символов в широкие (mbsrtowcs(3)); второе используется функциями преобразования широких символов в многобайтовые (wcsrtombs(3)). Для начального состояния обоих типов используется тип mbstate_t.
Все состояния 8-битных кодировок соответствуют начальному состоянию. Для многобайтовых кодировок (UTF-8, EUC-*, BIG5 или SJIS) функции преобразования широкого символа в многобайтовый никогда не создают не исходные состояния, а функции преобразования многобайтового символа в широкий (например, mbrtowc(3)) создают не исходные состояния, если прерываются на середине символа.
Одним из способов создания mbstate_t в начальном состоянии является присвоение нулевого значения:
mbstate_t state; memset(&state,0,sizeof(mbstate_t));
В Linux также работает и следующее, но может привести к появлению предупреждения компилятора:
mbstate_t state = { 0 };
Функция mbsinit() проверяет *ps на соответствие начальному состоянию.
Функция mbsinit() возвращает ненулевое значение, если *ps находится в начальном состоянии, или если ps равно NULL. В противном случае возвращается 0.
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
mbsinit() | Безвредность в нитях | MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
Поведение mbsinit() зависит от категории LC_CTYPE текущей локали.
mbrlen(3), mbrtowc(3), mbsrtowcs(3), wcrtomb(3), wcsrtombs(3)
2016-10-08 | GNU |