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

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

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

мбртоц16 () прототип

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

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

Ако с представља нулти показивач, вредности н и пц16 се занемарују, а позив на је еквивалентан мбртоц16 (НУЛЛ, "", 1, пс).

Ако је резултујући произведени знак нула, стање конверзије * пс представља почетно стање померања.

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

  • пц16: Показивач на меморијску локацију за чување резултујућег 16-битног карактера.
  • с: Показивач на вишебајтни знак који желите претворити.
  • н: Максималан број бајтова у с за конверзију.
  • пс: Показивач на мбстате_т објекат који се користи приликом тумачења вишебајтног низа.

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

Функција мбртоц16 () враћа прву од следећих вредности која се подудара са доњим случајевима:

  • 0 ако је претворени знак нулти знак.
  • број бајтова (највише н) вишебајтног карактера који је успешно претворен у 16-битни знак.
  • -3 ако је следећи char16_tод знака мулти-цхар16_т (нпр. Сурогат пар) сада записан у * пц16. У овом случају се од уноса не обрађују бајтови.
  • -2 ако следећих н бајтова чине непотпуни, али до сада важећи, вишебајтни знак. У овом случају ништа није записано на * пц16.
  • -1 ако дође до грешке у кодирању. У овом случају ништа није записано на * пц16, еррно је постављено на ЕИЛСЕК, а вредност * пс је неодређена.

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

 #include #include #include #include using namespace std; int main(void) ( char16_t pc16; char s() = "x" ; mbstate_t ps(); int length; length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc16() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("16-bit character = 0x%04hx", pc16); return 0; )

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

 Многобајтни низ = к Дужина> х = 1 16-битни знак = 0к0078

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