Funkcja mbtowc () w C ++ konwertuje znak wielobajtowy na znak szeroki.
Funkcja mbtwoc () jest zdefiniowana w pliku nagłówkowym.
Prototyp mbtowc ()
int mbtowc (wchar_t * pwc, const char * pmb, size_t max);
Funkcja mbtowc () przyjmuje trzy argumenty i zwraca wartość całkowitą. Ta funkcja konwertuje znak wielobajtowy wskazywany przez pmb na znak szeroki (wartość typu wchar_t) i jest przechowywany w miejscu pamięci wskazanym przez pwc.
Jeśli pmb jest pustym wskaźnikiem, wywołanie mbtowc () zresetuje globalny stan konwersji i określi, czy sekwencje przesunięć są używane.
Parametry mbtowc ()
- pwc: Wskaźnik do wynikowego szerokiego znaku
- pmb: wskaźnik do znaku wielobajtowego, który jest konwertowany na znak szeroki
- max: Maksymalny rozmiar w bajtach pmb do rozważenia dla znaku wielobajtowego.
mbtowc () Wartość zwracana
Jeśli pmb nie jest pustym wskaźnikiem, mbtowc () zwraca:
- liczba bajtów zawartych w wielobajtowym znaku wskazywanym przez pmb.
- -1, jeśli pierwszy bajt wskazywany przez pmb nie tworzy prawidłowego znaku wielobajtowego.
- 0, jeśli pmb wskazuje na kończący znak null, tj. „ 0”.
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 mbtowc ()?
#include #include #include using namespace std; int main() ( char pmb() = "Welcome to Programiz.com"; wchar_t pwc(100); int len, ret_val; /* resets internal conversion state */ mbtowc (NULL, NULL, 0); len = strlen(pmb); ret_val = mbtowc(pwc, pmb, strlen(pmb)); cout << "Return Value = " << ret_val << endl; wcout << "Wide character string: " << pwc; return(0); )
Po uruchomieniu programu możliwe wyjście to:
Wartość zwracana = 1 szeroki ciąg znaków: W @