Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Converta um caractere largo em sua representação de caracteres multibyte.Uma versão do wcrtomb com aprimoramentos de segurança, conforme descrito em Recursos de segurança no 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
Parâmetros
[out]pReturnValue
Retorna o número de bytes gravados ou -1 se ocorreu um erro.[out]mbchar
O multibyte resultante é convertido em caracteres.[in]sizeOfmbchar
O tamanho da mbchar variável em bytes.[in]wchar
Um caractere largo para converter.[in]mbstate
Um ponteiro para um mbstate_t objeto.
Valor de retorno
Retorna zero ou um errno valor se ocorrer um erro.
Comentários
O wcrtomb_s função converte um caractere largo, começando no estado de conversão especificada contido no mbstate, do valor contido no wchar, no endereço representado por mbchar.O pReturnValue valor será o número de bytes convertidos, mas não mais de MB_CUR_MAX bytes, ou um -1 se ocorreu um erro.
Se mbstate for nulo, o interno mbstate_t estado de conversão é usado.Se o caractere contido no wchar não tem um caractere multibyte correspondente, o valor de pReturnValue será -1 e a função retornará o errno valor de EILSEQ.
O wcrtomb_s função difere wctomb_s, _wctomb_s_l por sua capacidade de reinicialização.O estado de conversão é armazenado em mbstate para chamadas subseqüentes para o mesmo ou outras funções reinicializáveis.Os resultados são indefinidos ao combinar o uso de funções reiniciáveis e não reiniciável.Por exemplo, um aplicativo deve usar wcsrlen em vez de wcslen, se uma chamada subseqüente para wcsrtombs_s foram usados em vez dewcstombs_s.
No C++, usar esta função é simplificada pelo sobrecargas do modelo; os métodos sobrecarregados podem inferir o comprimento do buffer automaticamente (eliminando a necessidade de especificar um argumento de tamanho) e eles podem substituir automaticamente os funções não seguras, mais antigas, com suas contrapartes mais recentes e seguras.Para obter mais informações, consulte Proteger Overloads de modelo.
Exceções
O wcrtomb_s função é seguro com vários threads, desde que nenhuma função no segmento atual chama setlocale enquanto esta função está sendo executado e o mbstate é nulo.
Exemplo
// 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");
}
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.
Requisitos
Rotina |
Cabeçalho necessário |
|---|---|
wcrtomb_s |
<wchar.h> |