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

La función mbstowcs () en C ++ convierte una cadena de caracteres multibyte en una secuencia de caracteres ancha equivalente.

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

prototipo mbstowcs ()

 size_t mbstowcs (wchar_t * dest, const char * src, size_t max);

La función mbstowcs () toma tres argumentos y devuelve un valor entero.

Esta función convierte la cadena de caracteres multibyte cuyo primer elemento apunta src a su representación de carácter ancho (valor de tipo wchar_t).

El resultado se almacena en la ubicación de memoria señalada por dest. El parámetro max representa el número máximo de caracteres multibyte que se convertirán.

El mecanismo de conversión es el mismo que el de mbtowc (), excepto que el estado de conversión de mbtowc no se ve afectado. La conversión se detiene si:

  • Se encuentra un carácter nulo, que luego se convierte y almacena.
  • Se encuentra un carácter multibyte no válido.
  • Se ha convertido el número máximo de caracteres multibyte.

Parámetros de mbstowcs ()

  • dest: puntero a la amplia gama de caracteres resultante.
  • src: puntero al primer elemento del carácter multibyte que se convierte en carácter ancho.
  • max: número máximo de caracteres multibyte a convertir.

mbstowcs () Valor de retorno

  • Si la conversión es exitosa, mbstowcs () devuelve el número de caracteres anchos excluyendo el carácter de terminación (es decir, ' 0') que se escribe en la matriz de destino.
  • Si ocurre algún error durante la conversión, devuelve -1.

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

 #include #include using namespace std; int main() ( char src() = "xc4xe3xbaxc3"; wchar_t dest(10); int num; num = mbstowcs(dest, src, MB_CUR_MAX); cout << "Number of wide character converted = " << num << endl; wcout << "Wide Character String = " << dest << endl; return 0; )

Cuando ejecute el programa, una posible salida será:

 Número de caracteres anchos convertidos = 1 Cadena de caracteres anchos = ─

Articulos interesantes...