C ++ mbrtoc32 () - C ++ -kirjasto

Funktio mbrtoc32 () C ++: ssa muuntaa kapean monitavuisen merkin 32-bittiseksi merkkiesitykseksi.

Mbrtoc32 () -funktio määritetään otsikkotiedostossa.

mbrtoc32 () prototyyppi

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

Funktio mbrtoc32 () muuntaa korkeintaan n monitavuista merkkiä, jota s edustaa, vastaavaksi utf-32-merkiksi ja tallentaa sen muistipaikkaan, johon pc32 osoittaa.

Jos s edustaa nollaosoitinta, n: n ja pc32: n arvot jätetään huomioimatta ja kutsunumero on sama kuin mbrtoc32(NULL, "", 1, ps).

Jos tuloksena oleva tuotettu merkki on tyhjä, muunnostila * ps edustaa alkuperäistä siirtotilaa.

mbrtoc32 () -parametrit

  • pc32: Osoitin muistipaikkaan tallentaaksesi tuloksena olevan 32-bittisen merkin.
  • s: Muunnettava monitavuisen merkin osoitin.
  • n: Muunnettavien tavujen enimmäismäärä sekunteina.
  • ps: Osoitin mbstate_t-objektille, jota käytetään tulkittaessa monitavuista merkkijonoa.

mbrtoc32 () Palautusarvo

Mbrtoc32 () -funktio palauttaa ensimmäisen seuraavista arvoista, jotka vastaavat alla olevia tapauksia:

  • 0, jos muunnettu merkki on tyhjä merkki.
  • onnistuneesti 32-bittiseksi muunnetun monitavuisen merkin tavujen määrä (enintään n).
  • -3, jos seuraava char32_tmoni-char32_t-merkistä (esim. Korvaava pari) on nyt kirjoitettu * pc32: een. Tässä tapauksessa syötteestä ei käsitellä tavuja.
  • -2 jos seuraavat n tavua muodostavat epätäydellisen, mutta toistaiseksi kelvollisen monitavuisen merkin. Tässä tapauksessa mitään ei kirjoiteta * pc32: lle.
  • -1 jos koodausvirhe tapahtuu. Tässä tapauksessa mitään ei kirjoiteta * pc32: lle, errno-asetukseksi määritetään EILSEQ ja * ps: n arvoa ei ole määritetty.

Esimerkki: Kuinka mbrtoc32 () -toiminto toimii?

 #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; )

Kun suoritat ohjelmaa, tulos on:

 Monitavuinen merkkijono = x Pituus = 1 32-bittinen merkki = 0x00000078

Mielenkiintoisia artikkeleita...