wcrtomb
Converta um caractere largo em sua representação de caracteres multibyte.Uma versão mais segura desta função está disponível. see 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
Parâmetros
[out]mbchar
O multibyte resultante é convertido em caracteres.[in]wchar
Um caractere largo para converter.[in]mbstate
Um ponteiro para um mbstate_t objeto.
Valor de retorno
Retorna o número de bytes necessários para representar os caracteres multibyte convertido, caso contrário -1 se ocorrer um erro.
Comentários
O wcrtomb 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 valor de retorno é o número de bytes necessários para representar os caracteres multibyte correspondente, mas ele não retornará mais de MB_CUR_MAX bytes.
Se mbstate for nulo, o interno mbstate_t objeto contendo o estado de conversão de mbchar é usado.Se a seqüência de caracteres wchar não tem um correspondente multibyte representação de caracteres, -1 é retornado e a errno for definido como EILSEQ.
O wcrtomb função difere wctomb, _wctomb_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 wcsnlen, se uma chamada subseqüente para wcsrtombs foram usados em vez de wcstombs.
No C++, essa função possui uma sobrecarga de modelo que invoca as suas similares do mais recentes e seguras dessa função.Para obter mais informações, consulte Proteger Overloads de modelo.
Exceções
O wcrtomb função é seguro com vários threads, desde que nenhuma função no segmento atual chama setlocale enquanto esta função está em execução e ao mesmo tempo que o mbstate é nulo.
Exemplo
// 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");
}
}
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 |
<wchar.h> |