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


wcrtomb_s

Преобразование расширенный символ в его представление многобайтового символов.Версия wcrtomb со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.

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

Параметры

  • [исходящий] pReturnValue
    Возвращает число записанных байтов или -1, если произошла ошибка.

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

  • [входящий] sizeOfmbchar
    Размер mbchar переменная в байтах.

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

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

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

Возвращает нуль или errno значение, если происходит ошибка.

Заметки

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

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

wcrtomb_s функция отличается от wctomb_s, _wctomb_s_l по restartability.Состояние преобразования сохраняется в пределах mbstate для последующих вызовов этой же или другой прерываемый функциям.Смешивание использование результаты не определены прерываемых и nonrestartable функций.Например, приложение использовал бы wcsrlen вместо wcslenесли последующий вызов wcsrtombs_s вместо использования wcstombs_s.

В C++ с помощью этой функции упрощает перегрузками шаблона; перегруженные методы могут определять длина буфера, автоматически (что устраняет необходимость указать аргумент size) и они могут автоматически заменять старые, non-безопасные функции с их новыми, безопасный копиями.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.

Исключения

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

Пример

// crt_wcrtomb_s.c
// This program converts a wide character
// to its corresponding multibyte character.
//

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

int main( void )
{
    errno_t     returnValue;
    size_t      pReturnValue;
    mbstate_t   mbstate;
    size_t      sizeOfmbStr = 1;
    char        mbchar = 0;
    wchar_t*    wchar = L"Q\0";

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

    returnValue = wcrtomb_s(&pReturnValue, &mbchar, sizeof(char),
                            *wchar, &mbstate);
    if (returnValue == 0) {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wchar);
        printf(" was converted to a the \"%c\" ", mbchar);
        printf("multibyte character.\n");
    }
    else
    {
        printf("No corresponding multibyte character "
               "was found.\n");
    }
}
  

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

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

Требования

Процедура

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

wcrtomb_s

<wchar.h>

См. также

Ссылки

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

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

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

mbsinit