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

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

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

prototipo mbrtoc32 ()

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

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

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

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

mbrtoc32 () Parámetros

  • pc32: puntero a la ubicación de la memoria para almacenar el carácter de 32 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.

mbrtoc32 () Valor de retorno

La función mbrtoc32 () 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 32 bits.
  • -3 si el siguiente char32_tde un carácter multi-char32_t (por ejemplo, un par sustituto) ahora se ha escrito en * pc32. 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 * pc32.
  • -1 si se produce un error de codificación. En este caso, no se escribe nada en * pc32, errno se establece en EILSEQ y el valor de * ps no se especifica.

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

Cuando ejecute el programa, la salida será:

 Cadena multibyte = x Longitud = 1 carácter de 32 bits = 0x00000078

Articulos interesantes...