mbtowc -
преобразовывает
мультибайтовую
последовательность
в широкий
символ
Standard C library (
libc,
-lc)
#include <stdlib.h>
int mbtowc(wchar_t *restrict pwc, const char s[restrict .n], size_t n);
The main case for this function is when
s is not NULL and
pwc is
not NULL. In this case, the
mbtowc() 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 an internal shift state known only to the
mbtowc() function. If
s does not point to a null byte ('\0'), it
returns the number of bytes that were consumed from
s, otherwise it
returns 0.
Если в
n
байтах,
начиная с
s,
не
содержится
полного
многобайтового
символа
или если в
них
содержится
некорректный
многобайтовый
символ, то
mbtowc()
возвращает
-1. Это может
произойти
даже если
n
>=
MB_CUR_MAX, если в
многобайтовой
строке
содержится
лишние
сдвиговые
последовательности.
Ещё случай,
когда
s не
равно NULL, а
pwc
равно NULL. В
этом
случае
функция
mbtowc()
действует
как
описано
выше, но не
сохраняет
преобразованный
широкий
символ в
памяти.
И третий
вариант,
когда
s
равно NULL. В
этом
случае
pwc и
n
игнорируются.
Функция
mbtowc()
сбрасывает
состояние
сдвига,
известное
только ей, в
начальное
состояние
и
возвращает
не ноль,
если
кодировка
имеет
непростое
состояние
сдвига, или
ноль, если
кодировка
не имеет
состояний.
Если
s не
равно NULL, то
функция
mbtowc()
возвращает
количество
потраченных
байт,
начиная с
s,
или 0, если
s
указывает
на байт null,
или -1 — при
ошибке.
Если
значение
s
равно NULL, то
функция
mbtowc()
возвращает
не ноль,
если
кодировка
имеет
необычное
смещение,
или ноль,
если
кодировка
не имеет
смещения.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
mbtowc() |
Безвредность
в нитях |
MT-Unsafe race |
POSIX.1-2001, POSIX.1-2008, C99.
Поведение
mbtowc() зависит
от
категории
LC_CTYPE текущей
локали.
Данную
функцию
небезопасно
использовать
в нитях. Для
этого
лучше
подходит
функция
mbrtowc(3)
с тем же
интерфейсом.
MB_CUR_MAX(3),
mblen(3),
mbrtowc(3),
mbstowcs(3),
wcstombs(3),
wctomb(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]