función c16rtomb() en C/C++

c16rtomb () es una función integrada en C/C++ que convierte la representación de caracteres de 16 bits en una representación de caracteres multibyte estrecha. Se define dentro del archivo de encabezado uchar.h de C++.

Sintaxis :

size_t c16rtomb(char* s, char16_t c16, mbstate_t* p)

Parámetros : la función acepta tres parámetros obligatorios como se muestra a continuación:

  • s : especifica la string donde se almacenará el carácter multibyte.
  • c16 : especifica el carácter de 16 bits a convertir.
  • p : especifica el puntero a un objeto mbstate_t utilizado al interpretar la string de varios bytes.

Valor devuelto : la función devuelve dos valores como se muestra a continuación:

  • Si el programa tiene éxito, la función devuelve el número de bytes escritos en la array de caracteres a la que apunta s.
  • En caso de falla, se devuelve -1 y EILSEQ se almacena en err no.

Los siguientes programas ilustran la función anterior.

Programa 1 :

// C++ program to illustrate the
// c16rtomb () function on it's success
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
  
int main()
{
    const char16_t str[] = u"Ishwar Gupta";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c16rtomb(s, str[j], &p);
        if ((length == 0) || (length > 50))
            break;
        for (int i = 0; i < length; ++i)
            cout << s[i];
        ++j;
    }
  
    return 0;
}
Producción:

Ishwar Gupta

Programa 2 :

// C++ program to illustrate the
// c16rtomb () function on it's failure
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
  
int main()
{
    const char16_t str[] = u"";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c16rtomb(s, str[j], &p);
        if ((length == 0) || (length > 50))
            break;
        for (int i = 0; i < length; ++i)
            cout << s[i];
        ++j;
    }
  
    return 0;
}
Producción:

Nota : No hay salida en el programa anterior ya que es un caso de falla.

Publicación traducida automáticamente

Artículo escrito por IshwarGupta 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 *