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

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

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

prototipo de wcsrtombs ()

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

La función wcsrtombs () convierte la cadena de caracteres ancha representada por * src en la cadena de caracteres multibyte correspondiente y se almacena en la matriz de caracteres apuntada por dest si dest no es nulo. Se escribe un máximo de caracteres len en dest.

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

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

Parámetros de wcsrtombs ()

  • > dest: puntero a la matriz de caracteres donde se almacena el carácter multibyte convertido.
  • src: puntero al puntero al primer carácter ancho a convertir.
  • len: número máximo de bytes disponibles en la matriz dest.
  • ps: puntero al objeto de estado de conversión.

wcsrtombs () Valor de retorno

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

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

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

Cuando ejecute el programa, la salida será:

 Número de caracteres multibyte escritos (excluyendo " 0") = 8 Carácter multibyte = ݣݗݿݟ

Articulos interesantes...