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

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

Sintaxis :

size_t c32rtomb(char* s, char32_t c32, 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 32 bits para 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.
  • Si falla, se devuelve -1 y EILSEQ se almacena en err no.

Programa 1 :

// C++ program to illustrate the
// c32rtomb () function on it's success
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
  
int main()
{
    const char32_t str[] = U"GeeksforGeeks";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c32rtomb(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:

GeeksforGeeks

Programa 2 :

// C++ program to illustrate the
// c32rtomb () function on it's failure
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
  
int main()
{
    const char32_t str[] = U"";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c32rtomb(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 *