Funkcja wctomb () w C ++ konwertuje znak szeroki na znak wielobajtowy.
Funkcja wctomb () jest zdefiniowana w pliku nagłówkowym.
wctomb () prototyp
int wctomb (char * pmb, wchar_t wc);
Funkcja wctomb () przyjmuje dwa argumenty i zwraca wartość całkowitą. Ta funkcja konwertuje szeroki znak reprezentowany przez wc na jego wielobajtowy odpowiednik i jest przechowywany w lokalizacji pamięci wskazanej przez pmb. Maksymalna liczba znaków, które można zapisać, to MB_CUR_MAX .
Jeśli wc jest znakiem null, bajt null jest zapisywany do pmb.
Jeśli pmb jest pustym wskaźnikiem, wywołanie wctomb () zresetuje globalny stan konwersji i określi, czy używane są sekwencje przesunięć.
wctomb () Parametry
- pmb: wskaźnik do wynikowego znaku wielobajtowego
- wc: znak szeroki, który jest konwertowany na znak wielobajtowy
wctomb () Zwracana wartość
Jeśli pmb nie jest pustym wskaźnikiem, wctomb () zwraca:
- liczba bajtów zawartych w wielobajtowej reprezentacji wc.
- -1, jeśli wc nie jest prawidłowym znakiem.
Jeśli pmb jest pustym wskaźnikiem, resetuje swój wewnętrzny stan konwersji, aby reprezentował początkowy stan przesunięcia i zwraca:
- 0, jeśli bieżące kodowanie wielobajtowe nie jest zależne od stanu (nie używa sekwencji przesunięć)
- wartość niezerową, jeśli bieżące kodowanie wielobajtowe jest zależne od stanu (wykorzystuje sekwencje przesunięć).
Przykład: Jak działa funkcja 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); )
Po uruchomieniu programu możliwe wyjście to:
Gdy pmb nie jest zerowe Zwracana wartość = 1 znak wielobajtowy: x↨R Gdy pmb jest równe zeru Wartość zwracana = 0 Znak wielobajtowy: