mbrtoc16() en C/C++ con ejemplos

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

Deja una respuesta

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