wcstombs - преобразует широкосимвольную строку в многобайтовую строку
wcstombs(3)
преобразует широкосимвольную строку в многобайтовую строку
ОБЗОР
#include <stdlib.h>
size_t wcstombs(char *dest, const wchar_t *src, size_t n);
ОПИСАНИЕ
Если значение
dest не равно NULL, то функция
wcstombs() преобразует
широкосимвольную строку
src в многобайтовую строку, начинающуюся с
dest. В
dest будет записано не более
n байт. Преобразование
начинается с начала строки и может прекратиться по трём причинам:
1. Встретившийся широкий символ нельзя представить в виде многобайтовой
последовательности (в соответствии с текущей системной локалью). В этом
случае возвращается (size_t) -1.
2. Достигнут предел по длине. В этом случае возвращается количество байтов,
записанных в dest, но состояние текущего смещения в строке теряется.
3. Широкосимвольная строка была полностью преобразована, включая завершающий
широкий символ null (L'\0'). В этом случае преобразование
заканчивается в первоначальном состоянии и возвращается количество
записанных в dest байт, не считая завершающий байт null ('\0').
Программист должен быть уверен, что в dest достаточно места для, по
крайней мере, n байт.
Если значение dest равно NULL, то n игнорируется и преобразование
выполняется как описано выше, исключая то, что преобразованные байты не
записываются в память и нет ограничения по длине.
Для того, чтобы избежать ограничения пункта 2, программист должен
удостовериться, что значение n больше или равно
wcstombs(NULL,src,0)+1.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция
wcstombs() возвращает количество байт в полученной многобайтовой
последовательности, не включая завершающий байт null. Если встречается
широкий символ, который невозможно преобразовать, возвращается
(size_t) -1.
АТРИБУТЫ
Описание терминов данного раздела смотрите в
attributes(7).
Интерфейс Атрибут Значение
wcstombs()
безвредность в потоках: безвредно (MT-Safe)
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.
ЗАМЕЧАНИЯ
Поведение
wcstombs() зависит от категории
LC_CTYPE текущей локали.
Функция wcsrtombs(3) предоставляет безопасный интерфейс с теми же
возможностями для использования в нитях.