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

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

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

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

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

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

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

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

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

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

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

  • Успехом, функција мбсртовцс () враћа број широких знакова записаних у дест, искључујући завршавајући широк нулл знак. Ако је дест нулл показивач, враћа број широких знакова који би били написани с обзиром на неограничену дужину.
  • У случају грешке конверзије, враћа се -1, а еррно се поставља на ЕИЛСЕК .

Пример: Како функционише функција мбсртовцс ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

Када покренете програм, излаз ће бити:

 Број написаних широких знакова (искључујући Л " 0") = 4 Широки знак = ݣݗݿݟ

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