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

La función wcrtomb() en C/C++ convierte un carácter ancho en su representación estrecha multibyte. El carácter ancho wc se traduce a su equivalente multibyte y se almacena en la array señalada por s . La función devuelve la longitud en bytes de la secuencia multibyte equivalente señalada por s .

Sintaxis:

size_t wcrtomb( char* s, wchar_t wc, mbstate_t* ps )

Parámetros: La función acepta tres parámetros obligatorios que se describen a continuación:

  • s: especifica el puntero a una array lo suficientemente grande como para contener una secuencia de varios bytes
  • wc: especifica el carácter ancho a convertir.
  • ps: especifica el puntero al estado de conversión utilizado al interpretar la string multibyte

Valores devueltos: la función devuelve dos valores como se muestra a continuación:

  • En caso de éxito, devuelve el número de bytes escritos en la array de caracteres cuyo primer elemento apunta s.
  • De lo contrario, devuelve -1 y errno se establece en EILSEQ .

Los siguientes programas ilustran la función anterior:
Programa 1:

// C++ program to illustrate the
// wcrtomb() function
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    setlocale(LC_ALL, "en_US.utf8");
  
    // initialize the string
    wchar_t wc[] = L"z\u00df\u6c34\U0001f34c";
  
    // array large enough to hold a multibyte sequence
    char s[25];
    int returnV;
  
    // initial state
    mbstate_t ps = mbstate_t();
    for (int i = 0; i < wcslen(wc); i++) {
        returnV = wcrtomb(s, wc[i], &ps);
  
        // print byte size, if its a valid character
        if (returnV != -1)
            cout << "Size of " << s << " is "
                 << returnV << " bytes" << endl;
        else
            cout << "Invalid wide character" << endl;
    }
  
    return 0;
}
Producción:

Size of z is 1 bytes
Size of Ã? is 2 bytes
Size of æ°´ is 3 bytes
Size of ð?? is 4 bytes

Programa 2:

// C++ program to illustrate the
// wcrtomb() function
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    setlocale(LC_ALL, "en_US.utf8");
  
    // initialize the string
    wchar_t wc[] = L"u\u00c6\u00f5\u01b5";
  
    // array large enough to hold a multibyte sequence
    char s[20];
    int returnV;
  
    // initial state
    mbstate_t ps = mbstate_t();
    for (int i = 0; i < wcslen(wc); i++) {
        returnV = wcrtomb(s, wc[i], &ps);
  
        // print byte size, if its a valid character
        if (returnV != -1)
            cout << "Size of " << s << " is "
                 << returnV << " bytes" << endl;
        else
            cout << "Invalid wide character" << endl;
    }
  
    return 0;
}
Producción:

Size of u    Ì_e is 1 bytes
Size of Ã?Ì_e is 2 bytes
Size of õÌ_e is 2 bytes
Size of ƵÌ_e is 2 bytes

Publicación traducida automáticamente

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