La función wctomb () en C ++ convierte un carácter ancho en un carácter multibyte.
La función wctomb () se define en el archivo de encabezado.
prototipo de wctomb ()
int wctomb (char * pmb, wchar_t wc);
La función wctomb () toma dos argumentos y devuelve un valor entero. Esta función convierte el carácter ancho representado por wc en su equivalente multibyte y se almacena en la ubicación de memoria señalada por pmb. El número máximo de caracteres que se pueden almacenar es MB_CUR_MAX .
Si wc es el carácter nulo, el byte nulo se escribe en pmb.
Si pmb es un puntero nulo, una llamada a wctomb () restablecerá el estado de conversión global y determinará si se utilizan secuencias de cambio.
Parámetros de wctomb ()
- pmb: puntero al carácter multibyte resultante
- wc: carácter ancho que se convierte en carácter multibyte
wctomb () Valor de retorno
Si pmb no es un puntero nulo, wctomb () devuelve:
- el número de bytes que están contenidos en la representación multibyte de wc.
- -1 si wc no es un carácter válido.
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 wctomb ()?
#include #include using namespace std; int main() ( wchar_t wc = L'x'; char *pmb1 = (char*)malloc(sizeof(char)); char *pmb2 = NULL; int ret_val; cout << "When pmb is not null" << endl; ret_val = wctomb(pmb1, wc); cout << "Return Value = " << ret_val << endl; wcout << "Multibyte Character: " << pmb1 << endl << endl; cout << "When pmb is null" << endl; ret_val = wctomb(pmb2, wc); cout << "Return Value = " << ret_val << endl; wcout << "Multibyte Character: " << pmb2; return(0); )
Cuando ejecute el programa, una posible salida será:
Cuando pmb no es nulo Valor devuelto = 1 Carácter multibyte: x↨R Cuando pmb es nulo Valor devuelto = 0 Carácter multibyte: