La función wcrtomb() en C/C++ convierte un carácter ancho en su representación estrecha multibyte. El carácter ancho wc se traduce a su equivalente multibyte y se almacena en la array señalada por s . La función devuelve la longitud en bytes de la secuencia multibyte equivalente señalada por s .
Sintaxis:
size_t wcrtomb( char* s, wchar_t wc, mbstate_t* ps )
Parámetros: La función acepta tres parámetros obligatorios que se describen a continuación:
- s: especifica el puntero a una array lo suficientemente grande como para contener una secuencia de varios bytes
- wc: especifica el carácter ancho a convertir.
- ps: especifica el puntero al estado de conversión utilizado al interpretar la string multibyte
Valores devueltos: la función devuelve dos valores como se muestra a continuación:
- En caso de éxito, devuelve el número de bytes escritos en la array de caracteres cuyo primer elemento apunta s.
- De lo contrario, devuelve -1 y errno se establece en EILSEQ .
Los siguientes programas ilustran la función anterior:
Programa 1:
// C++ program to illustrate the // wcrtomb() function #include <bits/stdc++.h> using namespace std; int main() { setlocale(LC_ALL, "en_US.utf8"); // initialize the string wchar_t wc[] = L"z\u00df\u6c34\U0001f34c"; // array large enough to hold a multibyte sequence char s[25]; int returnV; // initial state mbstate_t ps = mbstate_t(); for (int i = 0; i < wcslen(wc); i++) { returnV = wcrtomb(s, wc[i], &ps); // print byte size, if its a valid character if (returnV != -1) cout << "Size of " << s << " is " << returnV << " bytes" << endl; else cout << "Invalid wide character" << endl; } return 0; }
Producción:
Size of z is 1 bytes Size of Ã? is 2 bytes Size of æ°´ is 3 bytes Size of ð?? is 4 bytes
Programa 2:
// C++ program to illustrate the // wcrtomb() function #include <bits/stdc++.h> using namespace std; int main() { setlocale(LC_ALL, "en_US.utf8"); // initialize the string wchar_t wc[] = L"u\u00c6\u00f5\u01b5"; // array large enough to hold a multibyte sequence char s[20]; int returnV; // initial state mbstate_t ps = mbstate_t(); for (int i = 0; i < wcslen(wc); i++) { returnV = wcrtomb(s, wc[i], &ps); // print byte size, if its a valid character if (returnV != -1) cout << "Size of " << s << " is " << returnV << " bytes" << endl; else cout << "Invalid wide character" << endl; } return 0; }
Producción:
Size of u Ì_e is 1 bytes Size of Ã?Ì_e is 2 bytes Size of õÌ_e is 2 bytes Size of ƵÌ_e is 2 bytes
Publicación traducida automáticamente
Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA