Share via


wcrtomb

Converta um caractere largo em sua representação de caracteres multibyte.Uma versão mais segura desta função está disponível; consulte 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
    Multibyte resultante é convertido em caractere.

  • [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 caractere multibyte convertido, caso contrário, -1 se ocorrer um erro.

Comentários

The wcrtomb função converte um caractere largo, começando no estado de conversão especificada contido no mbstate, do valor contido em wchar, no endereço representado por mbchar. O valor retornado é o número de bytes necessários para representar os caractere multibyte correspondente, mas não retornará mais de MB_CUR_MAX bytes.

If mbstate for nulo, o interno mbstate_t objeto contendo o estado de conversão de mbchar é usado. Se o caractere de sequênciawchar não tem um correspondente multibyte representação de caracteres, -1 é retornado e a errno é definido como EILSEQ.

The 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 Outros funções reinicializáveis. Os resultados são indefinidos ao misturar o uso de funções nonrestartable e reinicializáveis.Por exemplo, um aplicativo utilize wcsrlen em vez de wcsnlen, se uma telefonar subseqüente para wcsrtombs foi usado em vez de wcstombs.

No C++, essa função tem uma sobrecarga de modelo que invoca as suas similares do mais recentes e seguras dessa função.For more information, see Proteger overloads de modelo.

Exceções

The wcrtomb função é safe com vários threads, contanto que não chama nenhuma função no segmento corrente setlocale durante a execução dessa função e, embora 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");
    }
}

The corresponding wide character "Q" was converted to the "Q" multibyte character.

Equivalente do NET Framework

Não aplicável. Para telefonar 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>

Consulte também

Referência

Conversão de Dados

Localidade

Interpretação de seqüências de caractere multibyte

mbsinit