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

A função mbrtoc16 () em C ++ converte um caractere multibyte estreito em uma representação de caractere de 16 bits.

A função mbrtoc16 () é definida no arquivo de cabeçalho.

protótipo mbrtoc16 ()

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

A função mbrtoc16 () converte no máximo n caracteres multibyte representados por s em seu caractere utf-16 equivalente e os armazena no local de memória apontado por pc16.

Se s representa um ponteiro nulo, os valores de ne pc16 são ignorados e a chamada para é equivalente a mbrtoc16 (NULL, "", 1, ps).

Se o caractere resultante produzido for nulo, o estado de conversão * ps representa o estado de deslocamento inicial.

Parâmetros mbrtoc16 ()

  • pc16: Ponteiro para o local da memória para armazenar o caractere de 16 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.

mbrtoc16 () Valor de retorno

A função mbrtoc16 () 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 16 bits.
  • -3 se o próximo char16_tde um caractere multi-char16_t (por exemplo, um par substituto) foi agora gravado em * pc16. 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 * pc16.
  • -1 se ocorrer um erro de codificação. Nesse caso, nada é gravado em * pc16, errno é definido como EILSEQ e o valor de * ps não é especificado.

Exemplo: Como funciona a função mbrtoc16 ()?

 #include #include #include #include using namespace std; int main(void) ( char16_t pc16; char s() = "x" ; mbstate_t ps(); int length; length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc16() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("16-bit character = 0x%04hx", pc16); return 0; )

Quando você executa o programa, a saída será:

 Cadeia de caracteres multibyte = x Lengt> h = 1 caractere de 16 bits = 0x0078

Artigos interessantes...