El mbrtoc32() es una función integrada en C/C++ que convierte un carácter estrecho de varios bytes en una representación de caracteres de 32 bits. Se define dentro del archivo de encabezado uchar.h de C++.
Sintaxis :
size_t mbrtoc32( char32_t* pc32, 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.
- pc32 : especifica la ubicación de la memoria para almacenar el carácter de 32 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 a un carácter de 32 bits.
- -3 si el siguiente char16_t de un carácter multi-char32_t (por ejemplo, un par suplente) ahora se ha escrito en *pc32. 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 *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.
Los siguientes programas ilustran la función anterior.
Programa 1 :
// C++ program to illustrate the // mbrtoc32() function #include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void) { char32_t pc32; char s[] = "S"; mbstate_t ps{}; int length; // initializing the function 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%04hx\n", pc32); return 0; }
Producción:
Multibyte string = S Length = 1 32-bit character = 0x0053
Programa 2 :
// C++ program to illustrate the // mbrtoc32() function #include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void) { char32_t pc32; char s[] = "S"; mbstate_t ps{}; int length; // initializing the function 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\n", pc32); return 0; }
Producción:
Multibyte string = S Length = 1 32-bit character = 0x00000053
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