Funksjonen mbrtoc32 () i C ++ konverterer et smalt multibyte-tegn til en 32-biters representasjon.
Funksjonen mbrtoc32 () er definert i topptekstfilen.
mbrtoc32 () prototype
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
Funksjonen mbrtoc32 () konverterer på det meste n multibyttegn representert av s til dets ekvivalente utf-32-tegn og lagrer det på minneplasseringen pekt på.
Hvis s representerer en nullpeker, ignoreres verdiene til n og pc32, og anropet til tilsvarer mbrtoc32(NULL, "", 1, ps)
.
Hvis det resulterende tegnet som produseres er null, representerer konverteringstilstanden * ps den opprinnelige skifttilstanden.
mbrtoc32 () Parametere
- pc32: Peker til minneplasseringen for å lagre det resulterende 32-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.
mbrtoc32 () Returverdi
Funksjonen mbrtoc32 () 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 ble konvertert til 32-biters tegn.
- -3 hvis neste
char32_t
fra et multi-char32_t-tegn (f.eks. Et surrogatpar) nå er skrevet til * pc32. 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 * pc32.
- -1 hvis kodingsfeil oppstår. I dette tilfellet er ingenting skrevet til * pc32, errno er satt til EILSEQ og verdien av * ps er uspesifisert.
Eksempel: Hvordan fungerer 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 kjører programmet, vil utdataene være:
Multibytestreng = x lengde = 1 32-bits tegn = 0x00000078