Поделиться через


wctomb, _wctomb_l

Преобразует расширенный символ в соответствующий многобайтовый символ. Доступны более безопасные версии этих функций; see wctomb_s, _wctomb_s_l.

Синтаксис

int wctomb(
   char *mbchar,
   wchar_t wchar
);
int _wctomb_l(
   char *mbchar,
   wchar_t wchar,
   _locale_t locale
);

Параметры

mbchar
Адрес последовательности многобайтовых символов.

wchar
Расширенный символ.

Возвращаемое значение

Если функция wctomb преобразует расширенный символ в многобайтовый символ, она возвращает число байтов (которое никогда не превышает MB_CUR_MAX) в расширенном символе. Если wchar является расширенным нуль-символом (L '\0'), wctomb возвращает 1. Если целевой указатель mbchar равен NULL, wctomb возвращает значение 0. Если преобразование невозможно в текущем языковом стандарте, wctomb возвращает значение -1 и errno имеет значение EILSEQ.

Замечания

Функция wctomb преобразует свой аргумент wchar в соответствующий многобайтовый символ и сохраняет результат в mbchar. Эту функцию можно вызывать из любой точки в любой программе. Функция wctomb использует текущий языковой стандарт для любых аспектов поведения, зависящих от языкового стандарта; функция _wctomb_l идентична wctomb за исключением того, что она использует переданный языковой стандарт. Дополнительные сведения см. в разделе Locale.

Кроме того, функция wctomb проверяет свои параметры. В противном mbchar NULLслучае вызывается недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, параметр errno устанавливается в значение EINVAL и функция возвращает –1.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок
wctomb <stdlib.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

Эта программа иллюстрирует поведение функции wctomb.

// crt_wctomb.cpp
// compile with: /W3
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   int i;
   wchar_t wc = L'a';
   char *pmb = (char *)malloc( MB_CUR_MAX );

   printf( "Convert a wide character:\n" );
   i = wctomb( pmb, wc ); // C4996
   // Note: wctomb is deprecated; consider using wctomb_s
   printf( "   Characters converted: %u\n", i );
   printf( "   Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
   Characters converted: 1
   Multibyte character: a

См. также

Преобразование данных
Локаль
_mbclen, , mblen_mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte