La función mbtowc () en C ++ convierte un carácter multibyte en un carácter ancho.
La función mbtwoc () se define en el archivo de encabezado.
prototipo mbtowc ()
int mbtowc (wchar_t * pwc, const char * pmb, size_t max);
La función mbtowc () toma tres argumentos y devuelve un valor entero. Esta función convierte el carácter multibyte señalado por pmb en un carácter ancho (valor de tipo wchar_t) y se almacena en la ubicación de memoria señalada por pwc.
Si pmb es un puntero nulo, una llamada a mbtowc () restablecerá el estado de conversión global y determinará si se utilizan secuencias de cambio.
Parámetros de mbtowc ()
- pwc: puntero al carácter ancho resultante
- pmb: puntero al carácter multibyte que se convierte en carácter ancho
- max: Tamaño máximo en bytes de pmb a considerar para el carácter multibyte.
mbtowc () Valor de retorno
Si pmb no es un puntero nulo, mbtowc () devuelve:
- el número de bytes contenidos en el carácter multibyte señalado por pmb.
- -1 si el primer byte apuntado por pmb no forma un carácter multibyte válido.
- 0 si pmb apunta al carácter nulo de terminación, es decir, ' 0'.
Si pmb es un puntero nulo, restablece su estado de conversión interno para representar el estado de cambio inicial y devuelve:
- 0 si la codificación multibyte actual no depende del estado (no usa secuencias de cambio)
- un valor distinto de cero si la codificación multibyte actual depende del estado (utiliza secuencias de desplazamiento).
Ejemplo: ¿Cómo funciona la función mbtowc ()?
#include #include #include using namespace std; int main() ( char pmb() = "Welcome to Programiz.com"; wchar_t pwc(100); int len, ret_val; /* resets internal conversion state */ mbtowc (NULL, NULL, 0); len = strlen(pmb); ret_val = mbtowc(pwc, pmb, strlen(pmb)); cout << "Return Value = " << ret_val << endl; wcout << "Wide character string: " << pwc; return(0); )
Cuando ejecute el programa, una posible salida será:
Valor de retorno = 1 Cadena de caracteres ancha: W @