La función mbsrtowcs( ) en C/C++ convierte una secuencia estrecha de caracteres multibyte en una secuencia ancha de caracteres. Convierte la string de caracteres multibyte cuyo primer byte está representado por *src en la representación de caracteres anchos correspondiente y se almacena en la array de caracteres anchos a la que apunta dest . Se escribe un máximo de caracteres de ancho de longitud en dest .
Sintaxis:
size_t mbsrtowcs( wchar_t* dest, const char** src, size_t len, mbstate_t* ps )
Parámetros: La función acepta cuatro parámetros obligatorios que se describen a continuación:
- dest : especifica el puntero a la array donde se almacena el carácter ancho convertido
- ps: especifica el puntero al objeto de estado de conversión
- src : especifica el puntero para apuntar al primer carácter multibyte para convertir
- len : especifica el número máximo de caracteres de ancho para almacenar
Valor devuelto: la función devuelve dos valores como se muestra a continuación:
- la función mbsrtowcs() devuelve el número de caracteres anchos escritos en dest, excluyendo el carácter nulo ancho de terminación en caso de éxito.
- si dest es un puntero nulo, devuelve el número de caracteres anchos que se habrían escrito teniendo en cuenta la longitud ilimitada.
- en caso de error de conversión, se devuelve -1 y errno se establece en EILSEQ
.
Nota: esta función mueve el puntero src al final de la string multibyte convertida. Esto no sucede si dst==NULL
Los siguientes programas ilustran la función anterior:
Programa 1:
// C++ program to illustrate // mbsrtowcs function #include <bits/stdc++.h> using namespace std; int main() { setlocale(LC_ALL, "en_US.utf8"); // initializing the string // narrow multibyte character sequence const char* src = "\u0763\u0757"; wchar_t dest[20]; // initial state mbstate_t ps = mbstate_t(); // maximum number of wide character int max = 10; int retVal = mbsrtowcs ( dest, &src, max, &ps ); wcout << L"Number of wide characters written = " << retVal << endl; wcout << L"Wide character = " << dest << endl; return 0; }
Number of wide characters written = 2 Wide character = Ý£Ý?
Programa 2:
// C++ program to illustrate // mbsrtowcs function #include <bits/stdc++.h> using namespace std; int main() { // set locale setlocale(LC_ALL, "en_US.utf8"); // initializing the string // narrow multibyte character sequence const char* src = u8"z\u00df\u6c34\U0001f34c"; wchar_t dest[20]; // initial state mbstate_t ps = mbstate_t(); // maximum number of wide character int max = 10; int retVal = mbsrtowcs ( dest, &src, max, &ps ); wcout << L"Number of wide characters written = " << retVal << endl; wcout << L"Wide character = " << dest << endl; return 0; }
Number of wide characters written = 4 Wide character = zÃ?æ°´ð??
Publicación traducida automáticamente
Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA