Funkcja mbstowcs () w C ++ konwertuje wielobajtowy ciąg znaków na równoważną sekwencję znaków szerokich.
Funkcja mbstowcs () jest zdefiniowana w pliku nagłówkowym.
Prototyp mbstowcs ()
size_t mbstowcs (wchar_t * dest, const char * src, size_t max);
Funkcja mbstowcs () przyjmuje trzy argumenty i zwraca wartość całkowitą.
Ta funkcja konwertuje wielobajtowy ciąg znaków, którego pierwszy element jest wskazywany przez src, na jego reprezentację w postaci szerokiego znaku (wartość typu wchar_t).
Wynik jest przechowywany w lokalizacji pamięci wskazanej przez dest. Parametr max reprezentuje maksymalną liczbę znaków wielobajtowych do konwersji.
Mechanizm konwersji jest taki sam, jak w przypadku mbtowc (), z wyjątkiem tego, że stan konwersji mbtowc pozostaje niezmieniony. Konwersja zatrzymuje się, jeśli:
- Napotkano znak pusty, który jest następnie konwertowany i zapisywany.
- Napotkano nieprawidłowy znak wielobajtowy.
- Maksymalna liczba znaków wielobajtowych została przekonwertowana.
Parametry mbstowcs ()
- dest: wskaźnik do wynikowej tablicy szerokich znaków.
- src: Wskaźnik do pierwszego elementu znaku wielobajtowego, który jest konwertowany na znak szeroki.
- max: Maksymalna liczba znaków wielobajtowych do konwersji.
mbstowcs () Wartość zwracana
- Jeśli konwersja się powiedzie, mbstowcs () zwraca liczbę szerokich znaków z wyłączeniem znaku kończącego (tj. „ 0”), który jest zapisywany w tablicy docelowej.
- Jeśli podczas konwersji wystąpi jakikolwiek błąd, zwraca wartość -1.
Przykład: Jak działa funkcja mbstowcs ()?
#include #include using namespace std; int main() ( char src() = "xc4xe3xbaxc3"; wchar_t dest(10); int num; num = mbstowcs(dest, src, MB_CUR_MAX); cout << "Number of wide character converted = " << num << endl; wcout << "Wide Character String = " << dest << endl; return 0; )
Po uruchomieniu programu możliwe wyjście to:
Liczba przekonwertowanych szerokich znaków = 1 szeroki ciąg znaków = ─