Funkcija vswprintf () v jeziku C ++ se uporablja za zapis formatiranega širokega niza v široki medpomnilnik nizov.
Funkcija vswprintf () je definirana v datoteki glave.
prototip vswprintf ()
int vswprintf (vmesnik wchar_t *, size_t buf_size, const wchar_t * format, va_list vlist);
Funkcija vswprintf () zapiše širok niz, na katerega kaže format, v medpomnilnik širokega niza. V (buf_size-1)
medpomnilnik je zapisano največ širokih znakov, čemur sledi ničelni znak.
Oblika širokega niza lahko vsebuje specifikatorje formatov, ki se začnejo z% in jih nadomestijo vrednosti spremenljivk, ki se posredujejo kot seznam vlist.
parametri vswprintf ()
- medpomnilnik: Kazalec na široki vmesni niz za zapis rezultata.
- buf_size: Največje število širokih znakov za zapis, vključno s končnim ničelnim znakom.
- format: Kazalec na ničelno zaključen širok niz, ki je zapisan v medpomnilnik. Sestavljen je iz znakov in izbirnih specifikatorjev oblike, ki se začnejo z% Specifikatorji oblike se nadomestijo z vrednostmi ustreznih spremenljivk, ki sledijo formatu.
Specifikator oblike ima naslednje dele:- Vodilni znak%
- Zastave: neobvezna ena ali več zastavic, ki spreminjajo vedenje pretvorbe.
- -: Levo utemeljite rezultat znotraj polja. Privzeto je upravičeno.
- +: Znak rezultata je pritrjen na začetek vrednosti, tudi za pozitivne rezultate.
- Presledek: Če ni nobenega znaka, je presledek pritrjen na začetek rezultata.
- #: Izvede se druga oblika pretvorbe.
- 0: Uporablja se za celo število in število s plavajočo vejico. Za zapolnitev številk namesto presledka se uporabljajo vodilne ničle.
- Širina: neobvezna vrednost * ali celo število, ki se uporablja za določanje polja najmanjše širine.
- Natančnost: neobvezno polje, sestavljeno iz a. čemur sledi * ali celo število ali nič, kar določa natančnost.
- Dolžina: neobvezni modifikator dolžine, ki določa velikost argumenta.
- Specifikator: Specifikator pretvorbenega formata. Razpoložljivi opisniki oblike so naslednji:
Format Specifier Opis % Odtisov% c Napiše en sam znak s Zapiše niz znakov d ali i Pretvori podpisano celo število v decimalno predstavitev o Pretvori nepodpisano celo število v osmiško predstavitev X ali x Pretvori nešteto celo število v šestnajstiško predstavitev u Pretvori nešteto celo število v decimalno predstavitev F ali f Pretvori število s plavajočo vejico v decimalno predstavitev E ali e Pretvori število s plavajočo vejico v zapis decimalnega eksponenta A ali a Pretvori število s plavajočo vejico v šestnajstiški eksponent G ali g Pretvori število s plavajočo vejico v decimalni ali decimalni eksponentni zapis n Vrne število doslej napisanih znakov s tem klicem funkcije. Rezultat se zapiše v vrednost, na katero opozarja argument str Zapiše zaporedje znakov, opredeljeno z izvedbo, ki definira kazalec.
Tako je splošna oblika specifikatorja oblike:Specifikator% (zastavice) (širina) (. natančnost) (dolžina)
- vlist: seznam argumentov, ki vsebujejo podatke za zapis.
vswprintf () Vrnjena vrednost
- Če je uspešna, funkcija vswprintf () vrne število napisanih širokih znakov, razen končnega ničelnega znaka.
- Negativna vrednost se vrne, če pride do kakršne koli napake kodiranja ali če je bilo število znakov, ki jih je treba ustvariti, enako ali večje od buf_size.
Primer: Kako deluje 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; )
Ko zaženete program, bo v example.txt zapisano naslednje:
Arabske črke: ڄ ڱ ڪ ڣ ڄ