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

Η συνάρτηση mbsrtowcs () στο C ++ μετατρέπει μια στενή ακολουθία χαρακτήρων πολλαπλών byte σε μια ευρεία ακολουθία χαρακτήρων (του τύπου wchar_t).

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

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

 size_t mbsrtowcs (wchar_t * dest, const char ** src, size_t len, mbstate_t * ps);

Η συνάρτηση mbsrtowcs () μετατρέπει τη συμβολοσειρά χαρακτήρων πολλαπλών byte της οποίας το πρώτο byte αντιπροσωπεύεται από * src σε αντίστοιχη ευρεία αναπαράσταση χαρακτήρων και αποθηκεύεται στη σειρά ευρέων χαρακτήρων που υποδεικνύεται από τον προορισμό. Οι μέγιστοι χαρακτήρες με πλάτος len γράφονται στον προορισμό.

Η διαδικασία μετατροπής είναι παρόμοια με την επανειλημμένη κλήση του mbrtowc (). Η μετατροπή σταματά εάν:

  • Ένας μηδενικός χαρακτήρας πολλαπλών byte μετατράπηκε και αποθηκεύτηκε. Σε αυτήν την περίπτωση, το src έχει οριστεί σε μηδέν και το ps αντιπροσωπεύει την αρχική κατάσταση μετατόπισης.
  • Παρουσιάστηκε μη έγκυρος χαρακτήρας πολλαπλών τύπων. Σε αυτήν την περίπτωση, το src έχει οριστεί για να δείχνει την αρχή του πρώτου μη μετατρεπόμενου χαρακτήρα πολλαπλών byte.
  • Ο χαρακτήρας ευρείας λίστας έχει αποθηκευτεί στον προορισμό. Σε αυτήν την περίπτωση, το src έχει οριστεί για να δείχνει την αρχή του πρώτου μη μετατρεπόμενου χαρακτήρα πολλαπλών byte.

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

  • προορισμός: Δείκτης στη συστοιχία όπου είναι αποθηκευμένος ο μετατρεπόμενος χαρακτήρας.
  • src: Δείκτης για δείκτη στον πρώτο χαρακτήρα πολλών τύπων που θα μετατραπεί.
  • len: Μέγιστος αριθμός χαρακτήρων για αποθήκευση.
  • ps: Δείκτης στην κατάσταση μετατροπής που χρησιμοποιείται κατά την ερμηνεία της συμβολοσειράς πολλαπλών byte

mbsrtowcs () Επιστροφή τιμή

  • Με επιτυχία, η συνάρτηση mbsrtowcs () επιστρέφει τον αριθμό των ευρέων χαρακτήρων που έχουν γραφτεί σε προορισμούς, εξαιρουμένου του τερματικού ευρέως μηδενικού χαρακτήρα. Εάν το dest είναι μηδενικός δείκτης, επιστρέφει τον αριθμό των ευρέων χαρακτήρων που θα είχαν γραφτεί λαμβάνοντας υπόψη το απεριόριστο μήκος.
  • Στο σφάλμα μετατροπής, το -1 επιστρέφεται και το errno έχει οριστεί σε EILSEQ .

Παράδειγμα: Πώς λειτουργεί η λειτουργία mbsrtowcs ();

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

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

 Αριθμός γραμμένων χαρακτήρων (εξαιρουμένου του L " 0") = 4 Ευρύς χαρακτήρας = ݣݗݿݟ

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