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_t
frå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