C ++ vswprintf () - C ++ standardna biblioteka

Funkcija vswprintf () u C ++-u koristi se za upisivanje formatiranog širokog niza u međuspremnik širokog niza.

Funkcija vswprintf () definirana je u zaglavnoj datoteci.

prototip vswprintf ()

 int vswprintf (wchar_t * međuspremnik, size_t buf_size, const wchar_t * format, va_list vlist);

Funkcija vswprintf () upisuje široki niz na koji ukazuje format prema širokom međuspremniku niza. U (buf_size-1)međuspremnik se zapisuje najviše širokih znakova, a iza njih slijedi null širok znak.

Široki format niza može sadržavati specifikatore formata koji počinju s% koji se zamjenjuju vrijednostima varijabli koje se prosljeđuju kao popis vlist.

vswprintf () parametri

  • međuspremnik: pokazivač na široki međuspremnik niza za pisanje rezultata.
  • buf_size: Maksimalan broj širokih znakova za pisanje, uključujući završni null široki znak.
  • format: pokazivač na nulto završeni široki niz koji je zapisan u međuspremnik. Sastoji se od znakova, zajedno s neobaveznim specifikatorima formata koji počinju s%. Specifikatori formata zamjenjuju se vrijednostima odgovarajućih varijabli koje slijede nakon formata.
    Specifikator formata ima sljedeće dijelove:
    • Vodeći znak%
    • Zastave: Izborna jedna ili više zastavica koje mijenjaju ponašanje pretvorbe.
      • -: Lijevo opravdajte rezultat unutar polja. Po defaultu je ispravno opravdano.
      • +: Znak rezultata pridružen je početku vrijednosti, čak i za pozitivne rezultate.
      • Razmak: Ako nema znaka, razmak se dodaje na početak rezultata.
      • #: Izvodi se alternativni oblik pretvorbe.
      • 0: Koristi se za cijeli broj i broj s pomičnim zarezom. Vodeće se nule koriste za umetanje brojeva umjesto razmaka.
    • Širina: Izborna * ili cijela vrijednost koja se koristi za specificiranje polja minimalne širine.
    • Preciznost: Izborno polje koje se sastoji od a. nakon čega slijedi * ili cijeli broj ili ništa za specificiranje preciznosti.
    • Duljina: neobavezni modifikator duljine koji određuje veličinu argumenta.
    • Specifikator: Specifikator formata pretvorbe. Dostupni specifikatori formata su sljedeći:
    Specifikatori formata
    Specifikator formata Opis
    % Ispisi%
    c Napisuje jedan lik
    s Zapisuje niz znakova
    d ili ja Pretvara potpisani cijeli broj u decimalni prikaz
    o Pretvara nepotpisani cijeli broj u osminski prikaz
    X ili x Pretvara nepotpisani cijeli broj u heksadecimalni prikaz
    u Pretvara cijeli broj bez potpisa u decimalni prikaz
    Ž ili ž Pretvara broj s pomičnom zarezom u decimalni prikaz
    E ili e Pretvara broj s pomičnom zarezom u zapis decimalnog eksponenta
    A ili a Pretvara broj s pomičnom zarezom u heksadecimalni eksponent
    G ili g Pretvara broj s pomičnom zarezom u decimalni ili decimalni zapis eksponenta
    n Vraća broj znakova do sada napisanih ovim pozivom funkcije. Rezultat se zapisuje u vrijednost na koju ukazuje argument
    str Napisuje implementacijski definirani slijed znakova koji definira pokazivač.

    Dakle, općeniti format specifikatora formata je:
     Specifikator% (zastavice) (širina) (. preciznost) (duljina)
  • vlist: Popis argumenata koji sadrže podatke za upis.

vswprintf () Povratna vrijednost

  • Ako je uspješna, funkcija vswprintf () vraća broj napisanih širokih znakova, isključujući završni null široki znak.
  • Negativna vrijednost vraća se ako se dogodi bilo kakva pogreška kodiranja ili ako je broj generiranih znakova jednak ili veći od buf_size.

Primjer: Kako funkcionira vswprintf () funkcija?

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

Kada pokrenete program, u example.txt će se zapisati sljedeće:

 Arapska slova: ڄ ڱ ڪ ڣ ڄ

Zanimljivi članci...