mbrtoc32() en C/C++ con ejemplos

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *