wcsnrtombs -
преобразует
широкосимвольную
строки в
многобайтовую
строку
Standard C library (
libc,
-lc)
#include <wchar.h>
size_t wcsnrtombs(char dest[restrict .len], const wchar_t **restrict src,
size_t nwc, size_t len, mbstate_t *restrict ps);
wcsnrtombs():
Since glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Before glibc 2.10:
_GNU_SOURCE
Функция
wcsnrtombs()
похожа на
функцию
wcsrtombs(3),
исключая
то, что
количество
преобразуемых
широких
символов,
начиная с
*src,
ограничено
nwc.
Если
dest не
равно NULL,
функция
wcsnrtombs()
преобразует
не более
nwc
широких
символов
из
широкосимвольной
строки
*src в
многобайтовую
строку,
начиная с
dest.
В
dest будет
записано
максимум
len
байтов.
Обновляется
состояние
смещения в
*ps. Замена
происходит
путем
повторяющихся
вызовов
wcrtomb(dest,
*src, ps) до тех
пор, пока
они
выполняются
без ошибок.
При этом
значение
dest
увеличивается
на
количество
записанных
байтов, а
*src
— на
единицу.
Замена
может быть
остановлена
в трех
случаях:
- •
- Встретившийся
широкий
символ
нельзя
представить
в виде
многобайтовой
последовательности
(в
соответствии
с текущей
системной
локалью). В
этом
случае *src
будет
указывать
на
неправильный
широкий
символ,
возвращается
(size_t) -1, а
значение
errno
становится
равным EILSEQ.
- •
-
nwc wide characters have been converted without
encountering a null wide character (L'\0'), or the length limit forces a
stop. In this case, *src is left pointing to the next wide
character to be converted, and the number of bytes written to dest
is returned.
- •
- The wide-character string has been completely converted,
including the terminating null wide character (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 bytes written to
dest, excluding the terminating null byte ('\0'), is returned.
Если
значение
dest
равно NULL, то
len
игнорируется
и
преобразование
выполняется
как
описано
выше,
исключая
то, что
преобразованные
байты не
записываются
в память и
нет
ограничения
на длину
строки
назначения.
В обоих
перечисленных
случаях,
если
ps
равно NULL, то
используется
статическое
анонимное
состояние,
известное
только
функции
wcsnrtombs().
Программист
должен
быть
уверен, что
в
dest
достаточно
места для,
по крайней
мере,
len байт.
Функция
wcsrntombs()
возвращает
количество
байт в
полученной
многобайтовой
последовательности,
не включая
завершающий
байт null. Если
встречается
широкий
символ,
который
невозможно
преобразовать,
возвращается
(size_t) -1 и
значение
errno
становится
равным
EILSEQ.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
wcsnrtombs() |
Безвредность
в нитях |
MT-Unsafe race:wcsnrtombs/!ps |
POSIX.1-2008.
Поведение
wcsnrtombs() зависит
от
категории
LC_CTYPE текущей
локали.
Передавать
NULL в качестве
ps
небезопасно
при работе
с нитями.
iconv(3),
mbsinit(3),
wcsrtombs(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]> и Yuri Kozlov
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]