wcrtomb

Преобразование расширенный символ в его представление многобайтового символов.Более безопасную версию этой функции доступен; см. wcrtomb_s.

size_t wcrtomb(
   char *mbchar,
   wchar_t wchar,
   mbstate_t *mbstate
);
template <size_t size>
size_t wcrtomb(
   char (&mbchar)[size],
   wchar_t wchar,
   mbstate_t *mbstate
); // C++ only

Параметры

  • [исходящий] mbchar
    В результате символ преобразованный multibyte.

  • [входящий] wchar
    Расширенный символ, который необходимо преобразовать.

  • [входящий] mbstate
    Указатель на mbstate_t объект.

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

Возвращает число байтов, необходимое для представления преобразованный многобайтовый символ в противном случае - значение -1, если возникает ошибка.

Заметки

wcrtomb расширенный функция преобразует символ, начиная с заданным состоянием преобразования, содержащихся в mbstateиз значений, содержащихся в wcharв адрес, представленный by mbchar.Возвращаемое значение представляет число байтов, необходимых для соответствующего символа, представленного многобайтовый, но он не будет больше чем MB_CUR_MAX байты.

If mbstate null внутренняя mbstate_t объект, содержащий состояние преобразования mbchar используется.Если последовательность символов wchar нет соответствующего представления многобайтового символов, и возвращается -1 errno равно EILSEQ.

wcrtomb функция отличается от wctomb, _wctomb_l по restartability.Состояние преобразования сохраняется в пределах mbstate для последующих вызовов этой же или другой прерываемый функциям.Смешивание использование результаты не определены прерываемых и nonrestartable функций.Например, приложение использовал бы wcsrlen вместо wcsnlenесли последующий вызов wcsrtombs вместо использования wcstombs.

В C++ эта функция имеет перегрузку шаблона, которая вызывает более новые безопасные аналогом этого функция.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.

Исключения

wcrtomb функция многопоточной safe, если ни одна функция в текущих вызовов потока setlocale пока эта функция выполняется и while mbstate равны null.

Пример

// crt_wcrtomb.c
// compile with: /W3
// This program converts a wide character
// to its corresponding multibyte character.

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
    size_t      sizeOfCovertion = 0;
    mbstate_t   mbstate;
    char        mbStr = 0;
    wchar_t*    wcStr = L"Q";

    // Reset to initial conversion state
    memset(&mbstate, 0, sizeof(mbstate));

    sizeOfCovertion = wcrtomb(&mbStr, *wcStr, &mbstate); // C4996
    // Note: wcrtomb is deprecated; consider using wcrtomb_s instead
    if (sizeOfCovertion > 0)
    {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wcStr);
        printf(" was converted to the \"%c\" ", mbStr);
        printf("multibyte character.\n");
    }
    else
    {
        printf("No corresponding multibyte character "
               "was found.\n");
    }
}
  

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

Требования

Процедура

Обязательный заголовок

wcrtomb

<wchar.h>

См. также

Ссылки

Преобразование данных

Языковой стандарт

Интерпретация последовательностей многобайтового символов

mbsinit