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_t
de 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