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> |