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