C ++ mbrtoc16 () - C ++ Τυπική βιβλιοθήκη

Η συνάρτηση mbrtoc16 () στο C ++ μετατρέπει έναν στενό χαρακτήρα πολλαπλών byte σε αναπαράσταση χαρακτήρων 16 bit.

Η συνάρτηση mbrtoc16 () ορίζεται στο αρχείο κεφαλίδας.

πρωτότυπο mbrtoc16 ()

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

Η συνάρτηση mbrtoc16 () μετατρέπει το πολύ n multibyte χαρακτήρα που αντιπροσωπεύεται από το s στον αντίστοιχο utf-16 χαρακτήρα και τον αποθηκεύει στη θέση μνήμης που επισημαίνεται από το pc16.

Εάν το s αντιπροσωπεύει έναν μηδενικό δείκτη, οι τιμές των n και pc16 αγνοούνται και η κλήση προς είναι ισοδύναμη με το mbrtoc16 (NULL, "", 1, ps).

Εάν ο προκύπτων χαρακτήρας που παράγεται είναι μηδενικός, η κατάσταση μετατροπής * ps αντιπροσωπεύει την αρχική κατάσταση μετατόπισης.

mbrtoc16 () Παράμετροι

  • pc16: Δείκτης στη θέση μνήμης για αποθήκευση του προκύπτοντος χαρακτήρα 16 bit.
  • s: Δείκτης στον χαρακτήρα πολλαπλών byte για μετατροπή.
  • n: Μέγιστος αριθμός byte σε s για μετατροπή.
  • ps: Ένας δείκτης σε ένα αντικείμενο mbstate_t που χρησιμοποιείται κατά την ερμηνεία της συμβολοσειράς πολλαπλών byte.

mbrtoc16 () Τιμή επιστροφής

Η συνάρτηση mbrtoc16 () επιστρέφει την πρώτη από την ακόλουθη τιμή που ταιριάζει με τις παρακάτω περιπτώσεις:

  • 0 εάν ο χαρακτήρας που έχει μετατραπεί είναι μηδενικός χαρακτήρας.
  • τον αριθμό των byte (το πολύ n) του χαρακτήρα πολλαπλών byte που μετατράπηκε επιτυχώς σε χαρακτήρα 16 bit.
  • -3 εάν ο επόμενος char16_tχαρακτήρας multi-char16_t (π.χ. ένα υποκατάστατο ζεύγος) έχει πλέον γραφτεί σε * pc16. Δεν γίνεται επεξεργασία byte από την είσοδο σε αυτήν την περίπτωση.
  • -2 εάν τα επόμενα n bytes αποτελούν έναν ελλιπή, αλλά μέχρι στιγμής έγκυρο, χαρακτήρα πολλαπλών byte. Σε αυτήν την περίπτωση δεν γράφεται τίποτα στο * pc16.
  • -1 εάν παρουσιαστεί σφάλμα κωδικοποίησης. Σε αυτήν την περίπτωση τίποτα δεν γράφεται στο * pc16, το errno έχει οριστεί σε EILSEQ και η τιμή του * ps δεν έχει καθοριστεί.

Παράδειγμα: Πώς λειτουργεί η λειτουργία 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; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Συμβολοσειρά πολλαπλών byte = x Μήκος> h = 1 χαρακτήρας 16-bit = 0x0078

ενδιαφέροντα άρθρα...