Функција мбртоц32 () у Ц ++ претвара уски вишебајтни карактер у 32-битну представу знакова.
Функција мбртоц32 () је дефинисана у датотеци заглавља.
мбртоц32 () прототип
сизе_т мбртоц32 (цхар32_т * пц32, цонст цхар * с, сизе_т н, мбстате_т * пс);
Функција мбртоц32 () претвара највише н вишебајтних знакова представљених с у њихов еквивалентни утф-32 знак и чува га на меморијској локацији на коју указује пц32.
Ако с представља нулти показивач, вредности н и пц32 се занемарују и позив на је еквивалентан mbrtoc32(NULL, "", 1, ps)
.
Ако је резултујући произведени знак нула, стање конверзије * пс представља почетно стање померања.
мбртоц32 () Параметри
- пц32: Показивач на меморијску локацију за чување резултујућег 32-битног знака.
- с: Показивач на вишебајтни знак који желите претворити.
- н: Максималан број бајтова у с за конверзију.
- пс: Показивач на мбстате_т објекат који се користи приликом тумачења вишебајтног низа.
мбртоц32 () Повратна вредност
Функција мбртоц32 () враћа прву од следећих вредности која се подудара са доњим случајевима:
- 0 ако је претворени знак нулти знак.
- број бајтова (највише н) вишебајтног карактера који је успешно претворен у 32-битни знак.
- -3 ако је следећи
char32_t
од знака мулти-цхар32_т (нпр. Сурогат пар) сада записан у * пц32. У овом случају се од уноса не обрађују бајтови. - -2 ако следећих н бајтова чине непотпуни, али до сада важећи, вишебајтни знак. У овом случају ништа није записано на * пц32.
- -1 ако дође до грешке у кодирању. У овом случају ништа није записано на * пц32, еррно је постављено на ЕИЛСЕК, а вредност * пс је неодређена.
Пример: Како функционише функција мбртоц32 ()?
#include #include #include #include using namespace std; int main(void) ( char32_t pc32; char s() = "x" ; mbstate_t ps; int length; length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc32() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("32-bit character = 0x%08hx", pc32); return 0; )
Када покренете програм, излаз ће бити:
Низ од више бајтова = к Дужина = 1 32-битни знак = 0к00000078