Стандартная библиотека поддерживает различные функции, предназначенные для преобразования многобайтовых и двухбайтовых символов. Эти функции (перечисленные в табл. 19.6) используют заголовок <wchar.h>. Многие из них представляют собой версии обычных многобайтовых функций, которые могут быть прерваны (и повторно запущены — restartable). Повторно запускаемая версия используя информацию о состоянии, передаваемую ей в параметре типа mbstate_t. Если этот параметр нулевой, функция предоставит собственный объект типа mbstate_t.
Функция | Описание |
---|---|
win_t btowc(int ch) | Преобразует параметр ch в его двухбайтовый эквивалент и возвращает результат. Значение WEOF возвращается при ошибке или если ch не однобайтовый, а многобайтовый символ |
size_t mbrlen( const char *str, size_t num, mbstate_t *state) | Повторно запускаемая версия функции mblen(), в которой информация о состоянии передается через параметр state. Возвращает положительное число, равное длине следующее многобайтового символа. Нуль возвращается в случае, если следующий символ — нулевой. При ошибке возвращается отрицательное значение. В версии С99 к параметрам str и state применен квалификатор restrict |
size_t mbrtowc( wchar_t *out, const char *in, size_t num, mbstate_t *state) | Повторно запускаемая версия функции mbtowc(), в которой информация о состоянии передается через параметр state. Возвращает положительное число, равное длине следующего многобайтового символа. Нуль возвращается в случае, если следующий символ — нулевой. При ошибке возвращается значение -1 и переменной errno присваивается макрос EILSEQ. Если преобразование не завершено, возвращается число -2. В версии С99 к параметрам out, in и state применен квалификатор restrict |
int mbsinit( const mbstate_t *state) | Возвращает значение true, если параметр state представляет начальное состояние процесса преобразования |
size_t mbsrtowcs( wchar_t *out, const char **in, size_t num, mbstate_t *state) | Повторно запускаемая версия функции mbstowcs(), в которой информация о состоянии передается через параметр state. Кроме того, функция mbsrtowcs() отличается от функции mbstowcs() тем, что параметр in является косвенным указателем на исходный массив. При ошибке переменной errno присваивается макрос EILSEQ. В версии С99 к параметрам out, in и state применен квалификатор restrict |
size_t wcrtomb( char *out, wchar_t ch, mbstate_t *state) | Повторно запускаемая версия функции wctomb(), в которой информация о состоянии передается через параметр state. При ошибке переменной errno присваивается макрос EILSEQ. В версии С99 к параметрам out и state применен квалификатор restrict |
size_t wcsrtombs( char *out, const wchar_t **in, size_t num, mbstate_t *state) | Повторно запускаемая версия функции wcstombs(), в которой информация о состоянии передается через параметр state. Кроме того, функция wcsrtombs() отличается от функции wcstombs() тем, что параметр in является косвенный указателем на исходный массив. При ошибке переменной errno присваивается макрос EILSEQ. В версии С99 к параметрам out, in и state применен квалификатор restrict |
int wctob(wint_t ch) | Преобразует параметр ch в его однобайтовый эквивалент. При сбое функция возвращает значение EOF |