Funkcija wcrtomb () u C ++ pretvara široki znak u svoj uski multibajtni prikaz.
Wcrtomb () je definiran u datoteci zaglavlja.
prototip wcrtomb ()
veličina_t wcrtomb (char * s, wchar_t wc, mbstate_t * ps);
Funkcija wcrtomb () pretvara široki znak predstavljen wc u uski višebajtni znak i pohranjuje se na adresu na koju pokazuje s.
- Ako s nije null pokazivač, funkcija wcrtomb () određuje maksimalan broj bajtova potrebnih za spremanje multibajtnog prikaza wc i pohranjuje ga na memorijsko mjesto na koje pokazuje s. Može biti zapisano najviše MB_CUR_MAX bajtova. Vrijednost ps ažurira se prema potrebi.
- Ako je s null pokazivač, poziv je ekvivalentan
wcrtomb(buf, L' ', ps)
za neki interni buffer buff. - Ako
wc == L' '
je pohranjen nulti bajt.
wcrtomb () parametri
- s: Pokazivač na višebajtni niz znakova za spremanje rezultata.
- wc: Široki znak za pretvaranje.
- ps: pokazivač na stanje pretvorbe koje se koristi pri tumačenju višebajtnog niza
wcrtomb () Povratna vrijednost
- Nakon uspjeha, funkcija wcrtomb () vraća broj bajtova zapisanih u niz znakova na čiji je prvi element usmjeren s.
- U slučaju neuspjeha (tj. Wc nije valjani široki znak), vraća -1, errno je postavljeno na EILSEQ i ostavlja * ps u neodređenom stanju.
Primjer: Kako funkcionira funkcija wcrtomb ()?
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); wchar_t str() = L"uu00c6u00f5u01b5"; char s(16); int retVal; mbstate_t ps = mbstate_t(); for (int i=0; i
When you run the program, the output will be:
Size of u is 1 bytes Size of Æ is 2 bytes Size of õ is 2 bytes Size of Ƶ is 2 bytes