mbrtowc -
преобразовывает
мультибайтовую
последовательность
в широкий
символ
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 |
POSIX.1-2001, POSIX.1-2008, C99.
Поведение
mbrtowc() зависит
от
категории
LC_CTYPE текущей
локали.
mbsinit(3),
mbsrtowcs(3)
Русский
перевод
этой
страницы
руководства
был сделан
aereiae <
[email protected]>, Alexey <
[email protected]>, Azamat
Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
ITriskTI <
[email protected]>, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]>, Иван
Павлов <
[email protected]>
и Малянов
Евгений
Викторович
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]