C ++ mbrtoc32 () - C ++ Standardbibliotek

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_tfrå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

Intressanta artiklar...