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