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

La función mbsrtowcs( ) en C/C++ convierte una secuencia estrecha de caracteres multibyte en una secuencia ancha de caracteres. Convierte la string de caracteres multibyte cuyo primer byte está representado por *src en la representación de caracteres anchos correspondiente y se almacena en la array de caracteres anchos a la que apunta dest . Se escribe un máximo de caracteres de ancho de longitud en dest .

Sintaxis:

size_t mbsrtowcs( wchar_t* dest, const char** src, size_t len, mbstate_t* ps )

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

  • dest : especifica el puntero a la array donde se almacena el carácter ancho convertido
  • ps: especifica el puntero al objeto de estado de conversión
  • src : especifica el puntero para apuntar al primer carácter multibyte para convertir
  • len : especifica el número máximo de caracteres de ancho para almacenar

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

  • la función mbsrtowcs() devuelve el número de caracteres anchos escritos en dest, excluyendo el carácter nulo ancho de terminación en caso de éxito.
  • si dest es un puntero nulo, devuelve el número de caracteres anchos que se habrían escrito teniendo en cuenta la longitud ilimitada.
  • en caso de error de conversión, se devuelve -1 y errno se establece en EILSEQ
  • .

Nota: esta función mueve el puntero src al final de la string multibyte convertida. Esto no sucede si dst==NULL

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

// C++ program to illustrate 
// mbsrtowcs function
#include <bits/stdc++.h>
using namespace std;
   
int main()
{
    setlocale(LC_ALL, "en_US.utf8");
       
    // initializing the string
    // narrow multibyte character sequence
    const char* src = "\u0763\u0757";
    wchar_t dest[20];
       
    // initial state
    mbstate_t ps = mbstate_t();
       
    // maximum number of wide character
    int max = 10;
       
    int retVal = mbsrtowcs ( dest, &src, max, &ps );
    wcout << L"Number of wide characters written = "
          << retVal << endl;
     
    wcout << L"Wide character = " << dest << endl;
       
    return 0;
} 
Producción:

Number of wide characters written = 2
Wide character = Ý£Ý?

Programa 2:

// C++ program to illustrate 
// mbsrtowcs function
#include <bits/stdc++.h>
using namespace std;
   
int main()
{
    // set locale
    setlocale(LC_ALL, "en_US.utf8");
       
    // initializing the string
    // narrow multibyte character sequence
    const char* src = u8"z\u00df\u6c34\U0001f34c";
    wchar_t dest[20];
       
    // initial state
    mbstate_t ps = mbstate_t();
       
    // maximum number of wide character
    int max = 10;
       
    int retVal = mbsrtowcs ( dest, &src, max, &ps );
    wcout << L"Number of wide characters written  = "
          << retVal << endl;
     
    wcout << L"Wide character = " << dest << endl;
       
    return 0;
}
Producción:

Number of wide characters written  = 4
Wide character = zÃ?æ°´ð??

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 *