Преобразовать многобайтовый символ в широкий символ (с повторным запуском)
#include <wchar.h>
size_t mbrtowc( wchar_t *pwc,
const char *s,
size_t n,
mbstate_t *ps );
- pwc
- Указатель на объект типа
wchar_t
, куда функция сохранит широкий символ.
- s
- Указатель на конвертируемый многобайтовый символ.
- n
- Максимальный размер многобайтового символа.
- ps
- Указатель, позволяющий функции mbrtowc() быть перезапускаемой версией функции mbtowc(); если ps равен
NULL
, mbrtowc() использует внутреннюю переменную вместо ps. Вы можете вызвать mbsinit() для проверки статуса ps.
libc
Функция mbrtowc() конвертирует один многобайтовый символ, находящийся в строке s в широкий символ pwc, максимальный размер многобайтового символа указан в аргументе n.
На результат работы функции влияет значение LC_TYPE
.
- (size_t)-2
- После преобразования всех n байт, результирующее состояние преобразования указывает, что был передан неполный многобайтовый символ.
- (size_t)-1
- Обнаружена ошибка кодирования до завершения обработки многобайтового символа, в переменной errno будет сохранено значение
EILSEQ
, результирующее значение состояния преобразования неопределённо.
- 0
- Обнаружен нуль-терминатор, значение состояния преобразования вернётся к начальному.
- x
- Число байт, необходимое для завершения многобайтового символа, результирующее значение состояние преобразования указывает, что преобразовано x байт.
- EILSEQ
- Некорректная последовательность символов.
- EINVAL
- Аргумент ps указывает на повреждённый объект.
ANSI, POSIX 1003.1
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Да
- В потоке
- Да
errno, mblen(), mbrlen(), mbsinit(), mbsrtowcs(), mbstowcs(), mbtowc()
Предыдущий раздел: Описание API системной библиотеки