C ++ mbrtoc32 () - C ++ standaardbibliotheek

De functie mbrtoc32 () in C ++ converteert een smal multibyte-teken naar een 32-bits tekenweergave.

De functie mbrtoc32 () is gedefinieerd in het header-bestand.

mbrtoc32 () prototype

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

De functie mbrtoc32 () converteert maximaal n multibyte-teken vertegenwoordigd door s naar het equivalente utf-32-teken en slaat het op in de geheugenlocatie waarnaar pc32 verwijst.

Als s een null-pointer vertegenwoordigt, worden de waarden van n en pc32 genegeerd en is de aanroep naar gelijk aan mbrtoc32(NULL, "", 1, ps).

Als het resulterende geproduceerde teken nul is, vertegenwoordigt de conversietoestand * ps de aanvankelijke schakeltoestand.

mbrtoc32 () Parameters

  • pc32: Pointer naar de geheugenlocatie om het resulterende 32-bits teken op te slaan.
  • s: Pointer naar het multibyte-teken dat moet worden geconverteerd.
  • n: Maximaal aantal bytes in s om te converteren.
  • ps: een pointer naar een mbstate_t-object dat wordt gebruikt bij het interpreteren van de multibyte-string.

mbrtoc32 () Retourwaarde

De functie mbrtoc32 () retourneert de eerste van de volgende waarde die overeenkomt met de onderstaande gevallen:

  • 0 als het geconverteerde teken een nul-teken is.
  • het aantal bytes (maximaal n) van het multibyte-teken dat met succes is geconverteerd naar een 32-bits teken.
  • -3 als het volgende char32_tvan een multi-char32_t-teken (bijv. Een surrogaatpaar) nu naar * pc32 is geschreven. In dit geval worden er geen bytes uit de invoer verwerkt.
  • -2 als de volgende n bytes een onvolledig, maar tot dusverre geldig multibyte-teken vormen. In dit geval wordt er niets naar * pc32 geschreven.
  • -1 als er een coderingsfout optreedt. In dit geval wordt er niets naar * pc32 geschreven, wordt errno ingesteld op EILSEQ en is de waarde van * ps niet gespecificeerd.

Voorbeeld: hoe werkt de functie 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Multibyte-reeks = x lengte = 1 32-bits teken = 0x00000078

Interessante artikelen...