Funkcja wcrtomb () w C ++ konwertuje szeroki znak na jego wąską reprezentację wielobajtową.
Funkcja wcrtomb () jest zdefiniowana w pliku nagłówkowym.
wcrtomb () prototyp
size_t wcrtomb (char * s, wchar_t wc, mbstate_t * ps);
Funkcja wcrtomb () konwertuje szeroki znak reprezentowany przez wc na wąski znak wielobajtowy i jest przechowywany pod adresem wskazywanym przez s.
- Jeśli s nie jest pustym wskaźnikiem, funkcja wcrtomb () określa maksymalną liczbę bajtów wymaganych do przechowywania wielobajtowej reprezentacji wc i przechowuje ją w lokalizacji pamięci wskazywanej przez s. Można zapisać maksymalnie MB_CUR_MAX bajtów. Wartość ps jest aktualizowana zgodnie z wymaganiami.
- Jeśli s jest pustym wskaźnikiem, wywołanie jest równoważne z
wcrtomb(buf, L' ', ps)
jakimś wewnętrznym buforem buf. - Jeśli
wc == L' '
przechowywany jest bajt null.
wcrtomb () Parametry
- s: wskaźnik do wielobajtowej tablicy znaków do przechowywania wyniku.
- wc: szeroki znak do konwersji.
- ps: Wskaźnik do stanu konwersji używanego podczas interpretacji ciągu wielobajtowego
wcrtomb () Wartość zwracana
- Po pomyślnym zakończeniu funkcja wcrtomb () zwraca liczbę bajtów zapisanych w tablicy znaków, której pierwszy element jest wskazywany przez s.
- W przypadku niepowodzenia (tj. Wc nie jest prawidłowym szerokim znakiem), zwraca -1, errno jest ustawiane na EILSEQ i pozostawia * ps w nieokreślonym stanie.
Przykład: Jak działa funkcja 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