C ++ mbrtoc32 () - C ++ Standardbibliotek

Funktionen mbrtoc32 () i C ++ konverterer et smalt multibyte-tegn til en 32-bit tegnrepræsentation.

Funktionen mbrtoc32 () er defineret i header-fil.

mbrtoc32 () prototype

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

Funktionen mbrtoc32 () konverterer højst n multibyttegn repræsenteret af s til dets ækvivalente utf-32-tegn og gemmer det på den hukommelsesplacering, som pc32 peger på.

Hvis s repræsenterer en nul-markør, ignoreres værdierne for n og pc32, og opkaldet til svarer til mbrtoc32(NULL, "", 1, ps).

Hvis det resulterende tegn, der produceres, er null, repræsenterer konverteringstilstanden * ps den oprindelige skifttilstand.

mbrtoc32 () Parametre

  • pc32: Markør til hukommelsesplaceringen for at gemme det resulterende 32 bit tegn.
  • s: Markør til det multibyttegn, der skal konverteres.
  • n: Maksimalt antal byte i s, der skal konverteres.
  • ps: En markør til et mbstate_t-objekt, der bruges til fortolkning af multibytstrengen.

mbrtoc32 () Returneringsværdi

Funktionen mbrtoc32 () returnerer den første af følgende værdi, der matcher nedenstående tilfælde:

  • 0, hvis det konverterede tegn er et null-tegn.
  • antallet af byte (højst n) af multibyttegnet, der med succes blev konverteret til 32 bit tegn.
  • -3, hvis den næste char32_tfra et multi-char32_t-tegn (f.eks. Et surrogatpar) nu er skrevet til * pc32. I dette tilfælde behandles ingen byte fra input.
  • -2, hvis de næste n byte udgør et ufuldstændigt, men hidtil gyldigt, multibyttegn. I dette tilfælde er der ikke skrevet noget til * pc32.
  • -1 hvis der opstår kodningsfejl. I dette tilfælde skrives intet til * pc32, errno er indstillet til EILSEQ, og værdien af ​​* ps er ikke specificeret.

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 kører programmet, vil output være:

 Multibytestreng = x længde = 1 32-bit tegn = 0x00000078

Interessante artikler...