Funkcia mbtowc () v C ++ prevádza viacbajtový znak na široký znak.
Funkcia mbtwoc () je definovaná v hlavičkovom súbore.
prototyp mbtowc ()
int mbtowc (wchar_t * pwc, const char * pmb, size_t max);
Funkcia mbtowc () má tri argumenty a vráti celočíselnú hodnotu. Táto funkcia prevádza viacbajtový znak označený pomocou pmb na široký znak (hodnota typu wchar_t) a je uložená v pamäťovom mieste označenom pwc.
Ak je pmb nulový ukazovateľ, volanie mbtowc () vynuluje stav globálnej konverzie a určí, či sa použijú sekvencie posunu.
mbtowc () parametre
- pwc: Ukazovateľ na výsledný široký znak
- pmb: Ukazovateľ na viacbajtový znak, ktorý sa prevedie na široký znak
- max: Maximálna veľkosť v bajtoch pmb, ktorá sa má zohľadniť pre viacbajtový znak.
mbtowc () Vrátená hodnota
Ak pmb nie je nulový ukazovateľ, mbtowc () vráti:
- počet bajtov, ktoré sú obsiahnuté vo viacbajtovom znaku označenom pmb.
- -1, ak prvý bajt označený pmb netvorí platný viacbajtový znak.
- 0, ak pmb ukazuje na koncový prázdny znak, tj „ 0“.
Ak je pmb nulový ukazovateľ, obnoví svoj interný stav konverzie tak, aby predstavoval počiatočný stav posunu, a vráti:
- 0, ak súčasné viacbajtové kódovanie nezávisí od stavu (nepoužíva posúvacie sekvencie)
- nenulová hodnota, ak je súčasné viacbajtové kódovanie závislé od stavu (používa sekvencie posunu).
Príklad: Ako funguje funkcia 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 spustení programu bude možný výstup:
Návratová hodnota = 1 Širokoúhly reťazec znakov: W @