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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 Αριθμός γραπτών χαρακτήρων πολλών τύπων (εξαιρουμένου του " 0") = 8 Χαρακτήρας πολλών byte = ݣݗݿݟ

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