A função mbrtoc32 () em C ++ converte um caractere multibyte estreito em uma representação de caractere de 32 bits.
A função mbrtoc32 () é definida no arquivo de cabeçalho.
protótipo mbrtoc32 ()
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
A função mbrtoc32 () converte no máximo n caracteres multibyte representados por s em seu caractere utf-32 equivalente e o armazena no local de memória apontado por pc32.
Se s representa um ponteiro nulo, os valores de ne pc32 são ignorados e a chamada para é equivalente a mbrtoc32(NULL, "", 1, ps)
.
Se o caractere resultante produzido for nulo, o estado de conversão * ps representa o estado de deslocamento inicial.
Parâmetros mbrtoc32 ()
- pc32: Ponteiro para o local da memória para armazenar o caractere de 32 bits resultante.
- s: ponteiro para o caractere multibyte a ser convertido.
- n: Número máximo de bytes em s para converter.
- ps: Um ponteiro para um objeto mbstate_t usado ao interpretar a string multibyte.
mbrtoc32 () Valor de retorno
A função mbrtoc32 () retorna o primeiro dos seguintes valores que correspondem aos casos abaixo:
- 0 se o caractere convertido for um caractere nulo.
- o número de bytes (no máximo n) do caractere multibyte que foi convertido com êxito para o caractere de 32 bits.
- -3 se o próximo
char32_t
de um caractere multi-char32_t (por exemplo, um par substituto) foi agora gravado em * pc32. Nenhum byte é processado da entrada neste caso. - -2 se os próximos n bytes constituem um caractere multibyte incompleto, mas até agora válido. Nesse caso, nada é gravado em * pc32.
- -1 se ocorrer um erro de codificação. Neste caso, nada é gravado em * pc32, errno é definido como EILSEQ e o valor de * ps não é especificado.
Exemplo: Como funciona a função mbrtoc32 ()?
#include #include #include #include using namespace std; int main(void) ( char32_t pc32; char s() = "x" ; mbstate_t ps; int length; length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc32() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("32-bit character = 0x%08hx", pc32); return 0; )
Quando você executa o programa, a saída será:
Cadeia de caracteres multibyte = x Comprimento = 1 caractere de 32 bits = 0x00000078