mbsrtowcs -
преобразует
многобайтовую
строку в
строку
широких
символов
Standard C library (
libc,
-lc)
#include <wchar.h>
size_t mbsrtowcs(wchar_t dest[restrict .len], const char **restrict src,
size_t len, mbstate_t *restrict ps);
Если
dest не
равно NULL, то
функция
mbsrtowcs()
преобразует
многобайтовую
строку
*src в
строку
широких
символов,
начинающуюся
с
dest. В
dest
будет
записано
не более
len
символов.
Обновляется
состояние
сдвига
*ps.
Эффективное
выполнение
преобразования
осуществляется
повторяющимися
вызовами
mbrtowc(dest, *src, n, ps), где
n —
некое
положительное
число, и
пока вызов
завершается
успешно,
увеличивая
dest на
единицу и
*src
на
количество
использованных
байт.
Преобразование
может
остановиться
по трём
причинам:
- •
- Во
входных
данных
обнаружена
неправильная
многобайтовая
последовательность.
В этом
случае *src
по-прежнему
указывает
на
неправильную
многобайтовую
последовательность,
возвращается
(size_t) -1 и errno
присваивается
EILSEQ.
- •
-
len non-L'\0' wide characters have been stored at
dest. In this case, *src is left pointing to the next
multibyte sequence to be converted, and the number of wide characters
written to dest is returned.
- •
- The multibyte string has been completely converted,
including the terminating null wide character ('\0'), which has the side
effect of bringing back *ps to the initial state. In this case,
*src is set to NULL, and the number of wide characters written to
dest, excluding the terminating null wide character, is
returned.
Если
значение
dest
равно NULL, то
len
игнорируется
и
преобразование
выполняется
как
описано
выше,
исключая
то, что
преобразованные
широкие
символы не
записываются
в память и
нет
ограничения
по длине.
В обоих
перечисленных
случаях,
если
ps
равно NULL, то
используется
статическое
анонимное
состояние,
известное
только
функции
mbsrtowcs().
Программист
должен
проверить,
что в
dest есть
место по
крайней
мере для
len
широких
символов.
Функция
mbsrtowcs()
возвращает
количество
широких
символов,
которые
составили
преобразованную
часть
широкосимвольной
строки, не
включая
конечный
широкий
символ null.
Если
обнаружена
некорректная
многобайтовая
последовательность,
то
возвращается
(size_t) -1, а
errno
присваивается
EILSEQ.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
mbsrtowcs() |
Безвредность
в нитях |
MT-Unsafe race:mbsrtowcs/!ps |
POSIX.1-2001, POSIX.1-2008, C99.
Поведение
mbsrtowcs() зависит
от
категории
LC_CTYPE текущей
локали.
Передавать
NULL в качестве
ps
небезопасно
при работе
с нитями.
iconv(3),
mbrtowc(3),
mbsinit(3),
mbsnrtowcs(3),
mbstowcs(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]