Funkcia wctomb () v C ++ prevádza široký znak na viacbajtový znak.
Funkcia wctomb () je definovaná v hlavičkovom súbore.
prototyp wctomb ()
int wctomb (char * pmb, wchar_t wc);
Funkcia wctomb () má dva argumenty a vráti celočíselnú hodnotu. Táto funkcia prevádza široký znak predstavovaný wc na jeho viacbajtový ekvivalent a je uložená v mieste pamäte označenom pmb. Maximálny počet znakov, ktoré je možné uložiť, je MB_CUR_MAX .
Ak wc je nulový znak, nulový bajt sa zapíše do pmb.
Ak je pmb nulový ukazovateľ, volanie funkcie wctomb () vynuluje stav globálnej konverzie a určí, či sa použijú sekvencie posunu.
Parametre wctomb ()
- pmb: Ukazovateľ na výsledný viacbajtový znak
- wc: Široký znak, ktorý sa prevedie na viacbajtový znak
wctomb () Vrátená hodnota
Ak pmb nie je nulový ukazovateľ, vráti wctomb ():
- počet bajtov, ktoré sú obsiahnuté vo viacbajtovej reprezentácii wc.
- -1, ak wc nie je platný znak.
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 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 spustení programu bude možný výstup:
Keď pmb nemá hodnotu null Návratová hodnota = 1 viacbajtový znak: x↨R Keď pmb má hodnotu null Návratová hodnota = 0 viacbajtový znak: