El mbrtoc16() es una función integrada en C/C++ que convierte un carácter estrecho de varios bytes en una representación de caracteres de 16 bits. Se define dentro del archivo de encabezado uchar.h de C++.
Sintaxis :
ssize_t mbrtoc16( char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
Parámetros : la función acepta cuatro parámetros obligatorios que se describen a continuación:
- s : especifica el carácter multibyte a convertir.
- pc16 : especifica la ubicación de la memoria para almacenar el carácter de 16 bits resultante.
- n : especifica el número máximo de bytes en s para convertir.
- ps : especifica un objeto mbstate_t utilizado al interpretar la string multibyte.
Valor devuelto : la función devuelve cinco valores de la siguiente manera:
- 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ó con éxito en un carácter de 16 bits.
- -3 si el siguiente char16_t de un carácter multi-char16_t (por ejemplo, un par suplente) ahora se ha escrito en *pc16. No se procesan bytes desde la entrada en este caso.
- -2 si los siguientes n bytes constituyen un carácter multibyte incompleto, pero válido hasta el momento. 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.
Los siguientes programas ilustran la función anterior.
Programa 1 :
// C++ program to illustrate the // mbrtoc16() function #include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void) { char16_t pc16; char s[] = "G"; mbstate_t ps{}; int length; // initializing the function 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 = 0g%02hd\n", pc16); }
Producción:
Multibyte string = G Length = 1 16-bit character = 0g71
Programa 2 :
// C++ program to illustrate the // mbrtoc16() function #include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void) { char16_t pc16; char s[] = ""; mbstate_t ps{}; int length; // initializing the function 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 = 1e%04xy\n", pc16); }
Producción:
Multibyte string = Length = 0 16-bit character = 1e0000y
Publicación traducida automáticamente
Artículo escrito por RICHIK BHATTACHARJEE y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA