C ++ mbrtoc16 () - C ++ Standardbibliotek

Funktionen mbrtoc16 () i C ++ konverterar ett smalt multibyt-tecken till en 16-bitars teckenrepresentation.

Funktionen mbrtoc16 () definieras i rubrikfilen.

mbrtoc16 () prototyp

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

Funktionen mbrtoc16 () omvandlar högst n multibyte-tecken representerad av s till dess ekvivalenta utf-16-tecken och lagrar den på den minnesplats som pek16 pekas på.

Om s representerar en nollpekare ignoreras värdena för n och pc16 och anropet till motsvarar mbrtoc16 (NULL, "", 1, ps).

Om den resulterande karaktären som produceras är noll representerar omvandlingstillståndet * ps det initiala skifttillståndet.

mbrtoc16 () Parametrar

  • pc16: Pekare till minnesplatsen för att lagra den resulterande 16-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.

mbrtoc16 () Returvärde

Funktionen mbrtoc16 () 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) för multibytetecknet som framgångsrikt konverterats till 16 bitars tecken.
  • -3 om nästa char16_tfrån ett tecken med flera char16_t (t.ex. ett surrogatpar) nu har skrivits till * pc16. 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 ingenting till * pc16.
  • -1 om kodningsfel uppstår. I det här fallet skrivs ingenting till * pc16, errno är inställt på EILSEQ och värdet på * ps är ospecificerat.

Exempel: Hur fungerar mbrtoc16 ()?

 #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; )

När du kör programmet blir resultatet:

 Multibytsträng = x Lengt> h = 1 16-bitars tecken = 0x0078

Intressanta artiklar...