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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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