Функција вцсртомбс () у језику Ц ++ претвара широку секвенцу знакова у уску вишебајтну секвенцу знакова.
Функција вцсртомбс () је дефинисана у датотеци заглавља.
прототип вцсртомбс ()
сизе_т вцсртомбс (цхар * дест, цонст вцхар_т ** срц, сизе_т лен, мбстате_т * пс);
Функција вцсртомбс () претвара широки низ знакова представљен * срц у одговарајући вишебајтни низ знакова и чува се у низу знакова на који показује дест ако дест није нулл. У дест се уписује највише лен знакова.
Процес конверзије сличан је позивању вцртомб () узастопно. Конверзија се зауставља ако:
- Широки нулл знак је конвертован и ускладиштен. У овом случају, срц је постављен на нулу, а пс представља почетно стање померања.
- Нађен је неважећи широки лик. У овом случају, срц је постављен да усмерава на почетак првог неконвертованог широког знака.
- лен бајтови су сачувани у дест. У овом случају, срц је постављен да усмерава на почетак првог неконвертованог широког знака.
вцсртомбс () параметри
- > дест: Показивач на низ знакова у којем се чува претворени вишебајтни знак.
- срц: показивач на показивач на први широки знак који треба претворити.
- лен: Максималан број бајтова доступан у дест низу.
- пс: Показивач на објекат стања конверзије.
вцсртомбс () Повратна вредност
- Успехом, функција вцсртомбс () враћа број вишебајтних знакова записаних у дестинацију, искључујући крајњи широк нулл карактер, али укључујући низове смена.
Ако је дест нулл показивач, враћа број широких знакова који би били написани, искључујући завршавајући нулл знак. - У случају грешке конверзије, враћа се -1, а еррно се поставља на ЕИЛСЕК .
Пример: Како функционише функција вцсртомбс ()?
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const wchar_t* wstr = L"u0763u0757u077fu075f"; char str(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = wcsrtombs(str, &wstr, len, &ps); cout << "Number of multibyte characters written (excluding "\0 ") = " << retVal << endl; cout << "Multibyte character = " << str << endl; return 0; )
Када покренете програм, излаз ће бити:
Број записаних вишебајтних знакова (без „ 0“) = 8 Вишебајтних знакова = ݣݗݿݟ