C ++ mbrtoc16 () - C ++ Standardbibliotek

Funksjonen mbrtoc16 () i C ++ konverterer et smalt multibyttegn til en 16-biters representasjon.

Funksjonen mbrtoc16 () er definert i topptekstfilen.

mbrtoc16 () prototype

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

Funksjonen mbrtoc16 () konverterer på det meste n multibyttegn representert av s til dets ekvivalente utf-16-tegn og lagrer det på minneplasseringen pekt til pc16.

Hvis s representerer en nullpeker, ignoreres verdiene til n og pc16, og anropet til tilsvarer mbrtoc16 (NULL, "", 1, ps).

Hvis det resulterende tegnet som produseres er null, representerer konverteringstilstanden * ps den opprinnelige skifttilstanden.

mbrtoc16 () Parametere

  • pc16: Peker til minneplasseringen for å lagre det resulterende 16-biters tegnet.
  • s: peker til multibyttegnet som skal konverteres.
  • n: Maksimalt antall byte i s som skal konverteres.
  • ps: En peker til et mbstate_t-objekt som brukes når du tolker multibytestrengen.

mbrtoc16 () Returverdi

Funksjonen mbrtoc16 () returnerer den første av følgende verdi som samsvarer med tilfellene nedenfor:

  • 0 hvis det konverterte tegnet er et nulltegn.
  • antall byte (på det meste n) av multibyttegnet som vellykket ble konvertert til 16-biters tegn.
  • -3 hvis neste char16_tfra et multi-char16_t-tegn (f.eks. Et surrogatpar) nå er skrevet til * pc16. Ingen byte behandles fra inngangen i dette tilfellet.
  • -2 hvis de neste n byte utgjør et ufullstendig, men hittil gyldig, multibyttegn. I dette tilfellet er ingenting skrevet til * pc16.
  • -1 hvis kodingsfeil oppstår. I dette tilfellet er ingenting skrevet til * pc16, errno er satt til EILSEQ og verdien av * ps er uspesifisert.

Eksempel: Hvordan fungerer 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 kjører programmet, vil utdataene være:

 Multibytestreng = x Lengt> h = 1 16-biters karakter = 0x0078

Interessante artikler...