Funktionen mbrtoc32 () i C ++ konverterar ett smalt multibyt-tecken till en 32-bitars teckenrepresentation.
Funktionen mbrtoc32 () definieras i rubrikfilen.
mbrtoc32 () prototyp
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
Funktionen mbrtoc32 () omvandlar högst n multibyte-tecken representerad av s till dess ekvivalenta utf-32-tecken och lagrar den i minnesplatsen som pekas på.
Om s representerar en nollpekare ignoreras värdena för n och pc32 och anropet till motsvarar mbrtoc32(NULL, "", 1, ps)
.
Om den resulterande karaktären som produceras är noll representerar omvandlingstillståndet * ps det initiala skifttillståndet.
mbrtoc32 () Parametrar
- pc32: Pekare till minnesplatsen för att lagra den resulterande 32-bitars karaktären.
- s: Pekare till det multibyte-tecken som ska konverteras.
- n: Maximalt antal byte i s som ska konverteras.
- ps: En pekare till ett mbstate_t-objekt som används vid tolkning av multibytsträngen.
mbrtoc32 () Returvärde
Funktionen mbrtoc32 () returnerar det första av följande värde som matchar fallen nedan:
- 0 om det konverterade tecknet är ett noll tecken.
- antalet byte (högst n) av multibyte-tecknet som framgångsrikt konverterats till 32-bitars tecken.
- -3 om nästa
char32_t
från ett tecken med flera char32_t (t.ex. ett surrogatpar) nu har skrivits till * pc32. Inga byte bearbetas från ingången i detta fall. - -2 om nästa n byte utgör ett ofullständigt men hittills giltigt multibyt-tecken. I det här fallet skrivs inget till * pc32.
- -1 om kodningsfel uppstår. I det här fallet skrivs inget till * pc32, errno är inställt på EILSEQ och värdet på * ps är ospecificerat.
Exempel: Hur fungerar 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; )
När du kör programmet blir resultatet:
Multibytsträng = x längd = 1 32-bitars tecken = 0x00000078