C ++ mbsrtowcs () - Biblioteca estándar de C ++

La función mbsrtowcs () en C ++ convierte una secuencia de caracteres multibyte estrecha en una secuencia de caracteres amplia (de tipo wchar_t).

La función mbsrtowcs () se define en el archivo de encabezado.

prototipo mbsrtowcs ()

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

La función mbsrtowcs () convierte la cadena de caracteres multibyte cuyo primer byte está representado por * src en la representación de caracteres amplia correspondiente y se almacena en la matriz de caracteres amplia apuntada por dest. Se escribe un máximo de caracteres de longitud larga en dest.

El proceso de conversión es similar a llamar a mbrtowc () repetidamente. La conversión se detiene si:

  • Se convirtió y almacenó un carácter nulo multibyte. En este caso, src se establece en nulo y ps representa el estado de cambio inicial.
  • Se encontró un carácter multibyte no válido. En este caso, src se establece para señalar el comienzo del primer carácter multibyte no convertido.
  • Se ha almacenado un carácter ancho len en dest. En este caso, src se establece para señalar el comienzo del primer carácter multibyte no convertido.

Parámetros de mbsrtowcs ()

  • dest: puntero a la matriz donde se almacena el carácter ancho convertido.
  • src: puntero al puntero al primer carácter multibyte a convertir.
  • len: Número máximo de caracteres de ancho para almacenar.
  • ps: puntero al estado de conversión utilizado al interpretar la cadena multibyte

mbsrtowcs () Valor de retorno

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

Ejemplo: ¿Cómo funciona la función mbsrtowcs ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

Cuando ejecute el programa, la salida será:

 Número de caracteres anchos escritos (excluyendo L " 0") = 4 Carácter ancho = ݣݗݿݟ

Articulos interesantes...