Функција мбртоц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