Функцията wctomb () в C ++ преобразува широк символ в многобайт.
Функцията wctomb () е дефинирана в заглавния файл.
прототип на wctomb ()
int wctomb (char * pmb, wchar_t wc);
Функцията wctomb () взема два аргумента и връща цяла стойност. Тази функция преобразува широкия символ, представен от wc, в многобайтния му еквивалент и се съхранява на мястото на паметта, посочено от pmb. Максималният брой знаци, които могат да се съхраняват, е MB_CUR_MAX .
Ако wc е нулевият символ, нулевият байт се записва в pmb.
Ако pmb е нулев указател, извикването на wctomb () ще нулира състоянието на глобалното преобразуване и ще определи дали се използват последователности на смени.
wctomb () Параметри
- pmb: указател към получения многобайтов знак
- wc: Широк символ, който се преобразува в многобайт
wctomb () Върната стойност
Ако pmb не е нулев указател, wctomb () връща:
- броя на байтовете, които се съдържат в многобайтовото представяне на wc.
- -1, ако wc не е валиден знак.
Ако pmb е нулев указател, нулира вътрешното си състояние на преобразуване, за да представи първоначалното състояние на изместване и връща:
- 0, ако текущото многобайтово кодиране не зависи от състоянието (не използва последователности на смяна)
- ненулева стойност, ако текущото многобайтово кодиране зависи от състоянието (използва последователности на смяна).
Пример: Как работи функцията 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); )
Когато стартирате програмата, възможният изход ще бъде:
Когато pmb не е null Върната стойност = 1 многобайтов символ: x↨R Когато pmb е null Върната стойност = 0 Multibyte символ: