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

Η συνάρτηση vswprintf () στο C ++ χρησιμοποιείται για την εγγραφή μιας μορφοποιημένης ευρείας συμβολοσειράς σε μια ευρεία μνήμη συμβολοσειράς.

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

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

 int vswprintf (wchar_t * buffer, size_t buf_size, const wchar_t * format, va_list vlist);

Η συνάρτηση vswprintf () γράφει την ευρεία συμβολοσειρά που επισημαίνεται ανά μορφή στο buffer ευρείας συμβολοσειράς. Το μέγιστο των (buf_size-1)ευρέων χαρακτήρων γράφονται στην προσωρινή μνήμη που ακολουθείται από έναν χαρακτήρα μηδενικού πλάτους.

Η μορφή ευρείας συμβολοσειράς μπορεί να περιέχει προσδιοριστές μορφής ξεκινώντας από% που αντικαθίστανται από τις τιμές των μεταβλητών που μεταβιβάζονται ως λίστα λίστας.

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

  • buffer: Δείκτης σε ένα buffer ευρείας συμβολοσειράς για να γράψετε το αποτέλεσμα.
  • buf_size: Μέγιστος αριθμός ευρέων χαρακτήρων για εγγραφή, συμπεριλαμβανομένου του τελικού μηδενικού χαρακτήρα.
  • Μορφή: Ένας δείκτης σε μια ευρεία συμβολοσειρά που έχει τερματιστεί με μηδέν και γράφεται στο buffer Αποτελείται από χαρακτήρες μαζί με προαιρετικούς προσδιοριστές μορφής ξεκινώντας από%. Οι προσδιοριστές μορφής αντικαθίστανται από τις τιμές των αντίστοιχων μεταβλητών που ακολουθούν τη μορφή.
    Ο προσδιοριστής μορφής έχει τα ακόλουθα μέρη:
    • Ένα κορυφαίο σύμβολο%
    • Σημαίες: Προαιρετική μία ή περισσότερες σημαίες που τροποποιούν τη συμπεριφορά μετατροπής.
      • -: Αριστερά αιτιολογήστε το αποτέλεσμα στο πεδίο. Από προεπιλογή, δικαιολογείται σωστά.
      • +: Το σύμβολο του αποτελέσματος επισυνάπτεται στην αρχή της τιμής, ακόμη και για θετικά αποτελέσματα.
      • Space: Εάν δεν υπάρχει σημάδι, ένα κενό είναι προσαρτημένο στην αρχή του αποτελέσματος.
      • #: Εκτελείται μια εναλλακτική μορφή μετατροπής.
      • 0: Χρησιμοποιείται για ακέραιο και κυμαινόμενο αριθμό. Τα κορυφαία μηδενικά χρησιμοποιούνται για να γεμίσουν τους αριθμούς αντί για κενό.
    • Πλάτος: Μια προαιρετική * ή ακέραια τιμή που χρησιμοποιείται για τον καθορισμό του πεδίου ελάχιστου πλάτους.
    • Ακρίβεια: Ένα προαιρετικό πεδίο που αποτελείται από ακολουθούμενο από * ή ακέραιο ή τίποτα για να καθορίσετε την ακρίβεια.
    • Μήκος: Ένας προαιρετικός τροποποιητής μήκους που καθορίζει το μέγεθος του ορίσματος.
    • Καθορισμός: Ένας προσδιοριστής μορφής μετατροπής. Οι διαθέσιμοι προσδιοριστές μορφής είναι οι εξής:
    Διαμορφωτές μορφοποίησης
    Προσδιοριστής μορφής Περιγραφή
    % Εκτυπώσεις%
    ντο Γράφει έναν μόνο χαρακτήρα
    μικρό Γράφει μια συμβολοσειρά χαρακτήρων
    δ ή ι Μετατρέπει έναν υπογεγραμμένο ακέραιο σε δεκαδική αναπαράσταση
    ο Μετατρέπει έναν μη υπογεγραμμένο ακέραιο σε οκταδική αναπαράσταση
    X ή x Μετατρέπει έναν μη υπογεγραμμένο ακέραιο σε δεκαεξαδική αναπαράσταση
    εσύ Μετατρέπει έναν μη υπογεγραμμένο ακέραιο σε δεκαδική αναπαράσταση
    F ή f Μετατρέπει τον αριθμό κυμαινόμενου σημείου στην δεκαδική αναπαράσταση
    Ε ή ε Μετατρέπει τον αριθμό κυμαινόμενου σημείου στην υποδιαστολή του δεκαδικού εκθετικού
    Α ή α Μετατρέπει τον αριθμό κυμαινόμενου σημείου στον δεκαεξαδικό εκθέτη
    G ή g Μετατρέπει τον αριθμό κυμαινόμενου σημείου σε δεκαδικό ή δεκαδικό εκθετικό συμβολισμό
    ν Επιστρέφει τον αριθμό των χαρακτήρων που έχουν γραφτεί μέχρι στιγμής από αυτήν την κλήση στη συνάρτηση. Το αποτέλεσμα γράφεται στην τιμή που δείχνει το όρισμα
    Π Γράφει μια ακολουθία χαρακτήρων που καθορίζεται από την εφαρμογή και καθορίζει έναν δείκτη.

    Έτσι, η γενική μορφή του προσδιοριστή μορφής είναι:
     % (σημαίες) (πλάτος) (. ακρίβεια) (μήκος) προσδιοριστής
  • vlist: Μια λίστα με ορίσματα που περιέχουν τα δεδομένα για εγγραφή.

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

  • Εάν είναι επιτυχής, η συνάρτηση vswprintf () επιστρέφει τον αριθμό ευρέων χαρακτήρων που έχουν γραφτεί, εξαιρουμένου του τελικού μηδενικού χαρακτήρα.
  • Μια αρνητική τιμή επιστρέφεται εάν παρουσιαστεί κάποιο σφάλμα κωδικοποίησης ή εάν ο αριθμός των χαρακτήρων που θα δημιουργηθούν ήταν ίσος ή μεγαλύτερος από το buf_size.

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

 #include #include #include void write(wchar_t* buffer, size_t buf_size, const wchar_t *fmt,… ) ( va_list args; va_start(args, fmt); vswprintf(buffer, buf_size, fmt, args); va_end(args); ) int main () ( wchar_t str() = L"u0684 u06b1 u06aa u06a3 u0684"; wchar_t buffer(50); setlocale(LC_ALL, "en_US.UTF-8"); write(buffer, 50, L"Arabic Letters: %ls", str); wprintf(L"%ls", buffer); return 0; )

Όταν εκτελείτε το πρόγραμμα, τα ακόλουθα θα γραφτούν στο example.txt:

 Αραβικά γράμματα: ڄ ڱڱ ڣ ڄ

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