Funkcia mbrtoc32 () v C ++ prevádza úzky viacbajtový znak na 32-bitovú reprezentáciu znakov.
Funkcia mbrtoc32 () je definovaná v hlavičkovom súbore.
mbrtoc32 () prototyp
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
Funkcia mbrtoc32 () prevádza najviac n viacbytových znakov predstavovaných s na jej ekvivalentný znak utf-32 a ukladá ich do pamäťového miesta, na ktoré ukazuje pc32.
Ak s predstavuje nulový ukazovateľ, hodnoty n a pc32 sú ignorované a volanie na je ekvivalentné s mbrtoc32(NULL, "", 1, ps)
.
Ak je výsledný vyprodukovaný znak nulový, stav konverzie * ps predstavuje počiatočný stav posunu.
mbrtoc32 () parametre
- pc32: Ukazovateľ na miesto v pamäti na uloženie výsledného 32-bitového znaku.
- s: Ukazovateľ na viacbajtový znak, ktorý sa má previesť.
- n: Maximálny počet bajtov v s, ktoré sa majú previesť.
- ps: Ukazovateľ na objekt mbstate_t použitý pri interpretácii viacbytového reťazca.
mbrtoc32 () Vrátená hodnota
Funkcia mbrtoc32 () vráti prvú z nasledujúcich hodnôt, ktorá sa zhoduje s prípadmi uvedenými nižšie:
- 0, ak je prevedený znak nulový znak.
- počet bajtov (najviac n) viacbajtového znaku, ktorý bol úspešne prevedený na 32-bitový znak.
- -3, ak je ďalší
char32_t
znak zo znaku multi-char32_t (napr. Náhradný pár) teraz zapísaný do * pc32. V tomto prípade sa zo vstupu nespracúvajú žiadne bajty. - -2 ak ďalších n bajtov predstavuje neúplný, ale zatiaľ platný viacbajtový znak. V tomto prípade nie je nič zapísané do * pc32.
- -1, ak dôjde k chybe kódovania. V tomto prípade nie je nič zapísané do * pc32, errno je nastavené na EILSEQ a hodnota * ps je nešpecifikovaná.
Príklad: Ako funguje funkcia mbrtoc32 ()?
#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; )
Po spustení programu bude výstup:
Viacbajtový reťazec = x Dĺžka = 1 32-bitový znak = 0x00000078