C ++ mbrtoc16 () - Standardna knjižnica C ++

Funkcija mbrtoc16 () v jeziku C ++ pretvori ozek večbajtni znak v 16-bitno predstavitev znakov.

Funkcija mbrtoc16 () je definirana v datoteki glave.

prototip mbrtoc16 ()

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

Funkcija mbrtoc16 () pretvori največ n večbajtnih znakov, ki jih predstavlja s, v enakovreden znak utf-16 in jih shrani v pomnilniško mesto, na katerega kaže pc16.

Če s predstavlja ničelni kazalec, se vrednosti n in pc16 prezrejo, klic na pa je enak mbrtoc16 (NULL, "", 1, ps).

Če je nastali znak nič, stanje pretvorbe * ps predstavlja začetno stanje premika.

mbrtoc16 () Parametri

  • pc16: Kazalec na mesto v pomnilniku, da shranite nastali 16-bitni znak.
  • s: Kazalec na večbajtni znak za pretvorbo.
  • n: največje število bajtov v s za pretvorbo.
  • ps: Kazalec na objekt mbstate_t, ki se uporablja pri interpretaciji večbajtnega niza.

mbrtoc16 () Vrnjena vrednost

Funkcija mbrtoc16 () vrne prvo od naslednjih vrednosti, ki se ujema s spodnjimi primeri:

  • 0, če je pretvorjeni znak ničen.
  • število bajtov (največ n) večbajtnega znaka, ki je bil uspešno pretvorjen v 16-bitni znak.
  • -3, če je naslednji char16_tod znaka multi-char16_t (npr. Nadomestni par) zapisan v * pc16. V tem primeru se od vnosa ne obdela noben bajt.
  • -2, če naslednjih n bajtov predstavlja nepopoln, a zaenkrat veljaven večbajtni znak. V tem primeru na * pc16 ni zapisano nič.
  • -1, če pride do napake pri kodiranju. V tem primeru v * pc16 ni zapisano nič, errno je nastavljeno na EILSEQ in vrednost * ps ni določena.

Primer: Kako deluje funkcija mbrtoc16 ()?

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

Ko zaženete program, bo rezultat:

 Večbajtni niz = x Dolžina> h = 1 16-bitni znak = 0x0078

Zanimive Članki...