C ++ mbtowc () - C ++ standardowa biblioteka

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 @

Interesujące artykuły...