Ц ++ вцсртомбс () - Ц ++ стандардна библиотека

Функција вцсртомбс () у језику Ц ++ претвара широку секвенцу знакова у уску вишебајтну секвенцу знакова.

Функција вцсртомбс () је дефинисана у датотеци заглавља.

прототип вцсртомбс ()

 сизе_т вцсртомбс (цхар * дест, цонст вцхар_т ** срц, сизе_т лен, мбстате_т * пс);

Функција вцсртомбс () претвара широки низ знакова представљен * срц у одговарајући вишебајтни низ знакова и чува се у низу знакова на који показује дест ако дест није нулл. У дест се уписује највише лен знакова.

Процес конверзије сличан је позивању вцртомб () узастопно. Конверзија се зауставља ако:

  • Широки нулл знак је конвертован и ускладиштен. У овом случају, срц је постављен на нулу, а пс представља почетно стање померања.
  • Нађен је неважећи широки лик. У овом случају, срц је постављен да усмерава на почетак првог неконвертованог широког знака.
  • лен бајтови су сачувани у дест. У овом случају, срц је постављен да усмерава на почетак првог неконвертованог широког знака.

вцсртомбс () параметри

  • > дест: Показивач на низ знакова у којем се чува претворени вишебајтни знак.
  • срц: показивач на показивач на први широки знак који треба претворити.
  • лен: Максималан број бајтова доступан у дест низу.
  • пс: Показивач на објекат стања конверзије.

вцсртомбс () Повратна вредност

  • Успехом, функција вцсртомбс () враћа број вишебајтних знакова записаних у дестинацију, искључујући крајњи широк нулл карактер, али укључујући низове смена.
    Ако је дест нулл показивач, враћа број широких знакова који би били написани, искључујући завршавајући нулл знак.
  • У случају грешке конверзије, враћа се -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 Вишебајтних знакова = ݣݗݿݟ

Занимљиви Чланци...