C ++ mbrtoc32 () - Biblioteca padrão C ++

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_tde 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

Artigos interessantes...