C ++ vswprintf () - Biblioteca standard C ++

Funcția vswprintf () în C ++ este utilizată pentru a scrie un șir larg formatat într-un buffer de șir larg.

Funcția vswprintf () este definită în fișierul antet.

prototip vswprintf ()

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

Funcția vswprintf () scrie șirul larg indicat în funcție de format în bufferul șirului larg. Un maxim de (buf_size-1)caractere largi sunt scrise în buffer, urmat de un caracter lat nul.

Formatul șirului larg poate conține specificatori de format începând cu%, care sunt înlocuiți cu valorile variabilelor care sunt trecute ca listă vlist.

vswprintf () Parametri

  • buffer: Pointer către un buffer cu șir larg pentru a scrie rezultatul.
  • buf_size: Numărul maxim de caractere largi de scris, inclusiv caracterul lat nul nul.
  • format: Un pointer către un șir larg terminat nul, care este scris în buffer. Se compune din caractere împreună cu specificatori de format opționali începând cu%. Specificatorii de format sunt înlocuiți cu valorile variabilelor respective care urmează formatului.
    Specificatorul de format are următoarele părți:
    • Un semn de conducere%
    • Semnalizări: opțional unul sau mai multe semnalizatoare care modifică comportamentul de conversie.
      • -: Stânga justifică rezultatul în câmp. În mod implicit, este justificat.
      • +: Semnul rezultatului este atașat la începutul valorii, chiar și pentru rezultate pozitive.
      • Spațiu: dacă nu există niciun semn, un spațiu este atașat la începutul rezultatului.
      • #: Se efectuează o formă alternativă de conversie.
      • 0: Se folosește pentru numărul întreg și numărul cu virgulă mobilă. Zero-urile principale sunt utilizate pentru a tampona numerele în loc de spațiu.
    • Lățime: o valoare opțională * sau întreagă utilizată pentru a specifica câmpul de lățime minimă.
    • Precizie: un câmp opțional format dintr-un. urmat de * sau întreg sau nimic pentru a specifica precizia.
    • Lungime: un modificator opțional de lungime care specifică dimensiunea argumentului.
    • Specificator: un specificator de format de conversie. Specificatorii de format disponibili sunt după cum urmează:
    Specificatori de format
    Specificator de format Descriere
    % % Tipăriri
    c Scrie un singur personaj
    s Scrie un șir de caractere
    d sau i Convertește un număr întreg semnat în reprezentare zecimală
    o Convertește un număr întreg nesemnat în reprezentare octală
    X sau x Convertește un număr întreg nesemnat în reprezentare hexazecimală
    tu Convertește un număr întreg nesemnat în reprezentare zecimală
    F sau f Convertește numărul în virgulă mobilă în reprezentarea zecimală
    E sau e Convertește numărul în virgulă mobilă în notația exponentului zecimal
    A sau a Convertește numărul în virgulă mobilă în exponentul hexazecimal
    G sau g Convertește numărul în virgulă mobilă fie în notație zecimală, fie în exponentă zecimală
    n Returnează numărul de caractere scrise până acum de acest apel către funcție. Rezultatul este scris la valoarea indicată de argument
    p Scrie o secvență de caractere definită de implementare care definește un pointer.

    Deci, formatul general al specificatorului de format este:
     % (steaguri) (lățime) (. precizie) (lungime) specificator
  • vlist: o listă de argumente care conțin datele de scris.

vswprintf () Valoare returnată

  • Dacă reușește, funcția vswprintf () returnează numărul de caractere largi scrise, cu excepția caracterului lat nul nul.
  • O valoare negativă este returnată dacă apare orice eroare de codificare sau dacă numărul de caractere care trebuie generat a fost egal sau mai mare decât buf_size.

Exemplu: Cum funcționează funcția 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; )

Când rulați programul, următoarele vor fi scrise în example.txt:

 Litere arabe: ڄ ڱ ڪ ڣ ڄ

Articole interesante...