C ++ mbrtoc16 () - C ++ - vakiokirjasto

Funktio mbrtoc16 () C ++: ssa muuntaa kapean monitavuisen merkin 16-bittiseksi merkkiedustukseksi.

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

mbrtoc16 () prototyyppi

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

Funktio mbrtoc16 () muuntaa enintään n monitavuista merkkiä, jota s edustaa, vastaavaksi utf-16-merkiksi ja tallentaa sen muistipaikkaan, johon pc16 osoittaa.

Jos s edustaa nollaosoitinta, n: n ja pc16: n arvot jätetään huomiotta ja kutsunumero vastaa mbrtoc16 (NULL, "", 1, ps).

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

mbrtoc16 () -parametrit

  • pc16: Osoitin muistipaikkaan tallentamaan tuloksena olevan 16-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.

mbrtoc16 () Palautusarvo

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

  • 0, jos muunnettu merkki on tyhjä merkki.
  • onnistuneesti 16-bittiseksi muunnetun monitavuisen merkin tavujen määrä (enintään n).
  • -3, jos seuraava char16_tmoni-char16_t-merkistä (esim. Korvaava pari) on nyt kirjoitettu * pc16: 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 * pc16: een.
  • -1 jos koodausvirhe tapahtuu. Tässä tapauksessa mitään ei kirjoiteta * pc16: lle, errno-asetukseksi määritetään EILSEQ ja * ps: n arvoa ei ole määritetty.

Esimerkki: Kuinka mbrtoc16 () -toiminto toimii?

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

Kun suoritat ohjelmaa, tulos on:

 Monitavuinen merkkijono = x Lengt> h = 1 16-bittinen merkki = 0x0078

Mielenkiintoisia artikkeleita...