Compartilhar via


c16rtomb, c32rtomb

Converta um caractere largo UTF-16 ou UTF-32 em um caractere multibyte UTF-8.

Sintaxe

size_t c16rtomb(
    char *mbchar,
    char16_t wchar,
    mbstate_t *state
);
size_t c32rtomb(
    char *mbchar,
    char32_t wchar,
    mbstate_t *state
);

Parâmetros

mbchar
Ponteiro para uma matriz para armazenar o caractere multibyte UTF-8 convertido.

wchar
Um caractere largo a ser convertido.

state
Um ponteiro para um objeto mbstate_t.

Retornar valor

O número de bytes armazenados no objeto de matriz mbchar, incluindo quaisquer sequências de deslocamento. Se wchar não for um caractere largo válido, o valor (size_t)(-1) será retornado, errno será definido como EILSEQe o valor de state não será especificado.

Comentários

A c16rtomb função converte o caractere wchar UTF-16 LE para a sequência de caracteres estreitos UTF-8 multibyte equivalente. Se mbchar não for um ponteiro nulo, a função armazenará a sequência convertida no objeto de matriz apontado por mbchar. Até MB_CUR_MAX bytes são armazenados em mbchar e state é definido como o estado de deslocamento multibyte resultante.

Se wchar for um caractere largo nulo, uma sequência necessária para restaurar o estado de deslocamento inicial será armazenada, se necessário, seguida pelo caractere nulo. state é definido para o estado de conversão inicial. A função c32rtomb é idêntica, mas converte um caractere UTF-32.

Se mbchar for um ponteiro nulo, o comportamento será equivalente a uma chamada para a função que substitui um buffer interno para mbchar e um caractere nulo largo para wchar.

O objeto de estado de conversão state permite que você faça chamadas subsequentes para essa função e outras funções reiniciáveis que mantenham o estado de deslocamento dos caracteres de saída multibyte. Os resultados são indefinidos quando você combina o uso de funções reiniciáveis e não reiniciáveis.

Para converter caracteres UTF-16 em caracteres multibyte não-UTF-8, use as wcstombsfunções , ,_wcstombs_l wcstombs_s ou _wcstombs_s_l.

Requisitos

Rotina Cabeçalho necessário
c16rtomb, c32rtomb C, C++: <uchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Confira também

Conversão de dados
Localidade
Interpretação de sequências de caracteres multibyte
mbrtoc16, mbrtoc32
wcrtomb
wcrtomb_s