C ++ vswprintf () - C ++ Standardbibliotek

Funktionen vswprintf () i C ++ bruges til at skrive en formateret bred streng til en bred strengbuffer.

Funktionen vswprintf () er defineret i headerfilen.

vswprintf () prototype

 int vswprintf (wchar_t * buffer, størrelse_t buf_size, const wchar_t * format, va_list vlist);

Funktionen vswprintf () skriver den brede streng, som formatet peger på, til den brede strengbuffer. Et maksimum af (buf_size-1)brede tegn skrives til buffer, der efterfølges af et null bredt tegn.

Bredstrengformatet kan indeholde formatspecifikatorer, der starter med%, som erstattes af værdierne for variabler, der sendes som en liste vlist.

vswprintf () Parametre

  • buffer: Markør til en bred strengbuffer for at skrive resultatet.
  • buf_size: Maksimalt antal brede tegn, der skal skrives, inklusive det afsluttende null brede tegn.
  • format: En markør til en null-afsluttet bred streng, der skrives til buffer. Den består af tegn sammen med valgfri formatspecifikationer, der starter med%. Formatspecifikationerne erstattes af værdierne for de respektive variabler, der følger formatet.
    Formatspecifikatoren har følgende dele:
    • Et førende% tegn
    • Flag: Valgfrit et eller flere flag, der ændrer konverteringsadfærden.
      • -: Venstre retfærdiggør resultatet inden for feltet. Som standard er det retfærdiggjort.
      • +: Tegn på resultatet er knyttet til begyndelsen af ​​værdien, selv for positive resultater.
      • Mellemrum: Hvis der ikke er noget tegn, er der knyttet et mellemrum til begyndelsen af ​​resultatet.
      • #: En alternativ form for konvertering udføres.
      • 0: Det bruges til heltal og flydende nummer. Førende nuller bruges til at padde numrene i stedet for mellemrum.
    • Bredde: En valgfri * eller heltalsværdi, der bruges til at angive et minimumsbreddefelt.
    • Præcision: Et valgfrit felt bestående af en. efterfulgt af * eller heltal eller intet for at specificere præcisionen.
    • Længde: En valgfri længdemodifikator, der angiver størrelsen på argumentet.
    • Specifier: En konverteringsformatspecifikator. De tilgængelige formatspecifikatorer er som følger:
    Formatspecifikatorer
    Format Specifier Beskrivelse
    % Udskriver%
    c Skriver et enkelt tegn
    s Skriver en tegnstreng
    d eller i Konverterer et underskrevet heltal til decimalrepræsentation
    o Konverterer et usigneret heltal til oktal repræsentation
    X eller x Konverterer et usigneret heltal til hexadecimal repræsentation
    u Konverterer et usigneret heltal til decimalrepræsentation
    F eller f Konverterer flydende nummer til decimalrepræsentationen
    E eller e Konverterer flydende nummer til decimaleksponentnotationen
    A eller a Konverterer flydende nummer til den hexadecimale eksponent
    G eller g Konverterer flydende nummer til enten decimal- eller decimaleksponentnotation
    n Returnerer antallet af tegn, der hidtil er skrevet af dette opkald, til funktionen. Resultatet skrives til den værdi, som argumentet peger på
    s Skriver en implementeringsdefineret tegnsekvens, der definerer en markør.

    Så det generelle format for formatspecifikator er:
     % (flag) (bredde) (. præcision) (længde) angiver
  • vlist: En liste over argumenter, der indeholder de data, der skal skrives.

vswprintf () Returværdi

  • Hvis det lykkes, returnerer funktionen vswprintf () antallet af brede tegn skrevet undtagen det afsluttende null brede tegn.
  • En negativ værdi returneres, hvis der opstår en kodningsfejl, eller hvis antallet af tegn, der skal genereres, var lig med eller større end buf_size.

Eksempel: Hvordan fungerer vswprintf () -funktionen?

 #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; )

Når du kører programmet, skrives følgende til eksempel.txt:

 Arabiske bogstaver: ڄ ڱ ڪ ڣ ڄ

Interessante artikler...