C ++ mbrtoc16 () - Biblioteca estándar de C ++

La función mbrtoc16 () en C ++ convierte un carácter estrecho multibyte en una representación de carácter de 16 bits.

La función mbrtoc16 () se define en el archivo de encabezado.

prototipo mbrtoc16 ()

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

La función mbrtoc16 () convierte como máximo n caracteres multibyte representados por sa su carácter utf-16 equivalente y lo almacena en la ubicación de memoria apuntada por pc16.

Si s representa un puntero nulo, los valores de ny pc16 se ignoran y la llamada a es equivalente a mbrtoc16 (NULL, "", 1, ps).

Si el carácter resultante producido es nulo, el estado de conversión * ps representa el estado de cambio inicial.

mbrtoc16 () Parámetros

  • pc16: puntero a la ubicación de la memoria para almacenar el carácter de 16 bits resultante.
  • s: puntero al carácter multibyte para convertir.
  • n: Número máximo de bytes en s para convertir.
  • ps: un puntero a un objeto mbstate_t utilizado al interpretar la cadena multibyte.

mbrtoc16 () Valor devuelto

La función mbrtoc16 () devuelve el primero del siguiente valor que coincide con los casos siguientes:

  • 0 si el carácter convertido es un carácter nulo.
  • el número de bytes (como máximo n) del carácter multibyte que se convirtió correctamente en un carácter de 16 bits.
  • -3 si el siguiente char16_tde un carácter multi-char16_t (por ejemplo, un par sustituto) ahora se ha escrito en * pc16. En este caso, no se procesan bytes de la entrada.
  • -2 si los siguientes n bytes constituyen un carácter multibyte incompleto, pero válido hasta ahora. En este caso, no se escribe nada en * pc16.
  • -1 si se produce un error de codificación. En este caso, no se escribe nada en * pc16, errno se establece en EILSEQ y el valor de * ps no se especifica.

Ejemplo: ¿Cómo funciona la función 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; )

Cuando ejecute el programa, la salida será:

 Cadena multibyte = x Lengt> h = 1 carácter de 16 bits = 0x0078

Articulos interesantes...