Funktsiooni vswprintf () kaustas C ++ kasutatakse vormindatud laia stringi kirjutamiseks laia stringi puhvrisse.
Funktsioon vswprintf () on määratletud päisefailis.
vswprintf () prototüüp
int vswprintf (wchar_t * puhver, size_t buf_size, const wchar_t * formaat, va_list vlist);
Funktsioon vswprintf () kirjutab laia stringi puhvrisse laia stringi, millele vormingu järgi osutab. Puhvrisse (buf_size-1)
kirjutatakse maksimaalselt laiaid märke, millele järgneb null lai tähemärk.
Lai stringivorming võib sisaldada vorminguspetsifikaate, mis algavad% -st, mis asendatakse loendiloendina edastatud muutujate väärtustega.
vswprintf () parameetrid
- puhver: näitaja laia stringi puhvrisse tulemuse kirjutamiseks.
- buf_size: maksimaalne kirjutatavate laiade märkide arv koos lõppeva null laia tähemärgiga.
- formaat: kursor nulliga lõppenud laia stringi juurde, mis on kirjutatud puhvrisse. See koosneb märkidest koos valikuliste vorminguspetsifikaatoritega, mis algavad% -ga. Vorminguspetsifikaatorid asendatakse vastavate muutujate väärtustega, mis järgivad vormingut.
Vorminguspetsiifil on järgmised osad:- Juhtiv% märk
- Lipud: valikuliselt üks või mitu lippu, mis muudab konversioonikäitumist.
- -: vasakpoolne põhjendab tulemust väljal. Vaikimisi on see õigustatud.
- +: Tulemuse märk kinnitatakse väärtuse algusesse ka positiivsete tulemuste korral.
- Tühik: kui märki pole, lisatakse tulemuse algusesse tühik.
- #: Teostatakse teisenduse alternatiivne vorm.
- 0: Seda kasutatakse täis- ja ujukomaarvuks. Numbrite sisestamiseks tühiku asemel kasutatakse juhtnulle.
- Laius: valikuline * või täisarv, mida kasutatakse minimaalse laiuse välja määramiseks.
- Täpsus: valikuline väli, mis koosneb a. millele järgneb * või täisarv või mitte midagi täpsuse täpsustamiseks.
- Pikkus: valikuline pikkuse muutja, mis määrab argumendi suuruse.
- Täpsustaja: teisendusvormingu täpsustaja. Saadaval olevad vorminguspetsifikaatorid on järgmised:
Vorminguspetsifikaator Kirjeldus % Prindib% c Kirjutab ühe tähemärgi s Kirjutab märgistringi d või i Teisendab allkirjastatud täisarv kümnendarvudeks o Teisendab allkirjata täisarv kaheksakujuliseks X või x Teisendab allkirjastamata täisarv kuueteistkümnendsüsteemis u Teisendab allkirjata täisarv kümnendarvudeks F või f Teisendab ujukoma numbri kümnendarvuks E või e Teisendab ujukomaarv kümnendkoha astendikuks A või a Teisendab ujukomaarv kuueteistkümnendsüsteemi eksponendiks G või g Teisendab ujukomaarvu kümnend- või kümnendarvulise astendina n Tagastab selle kutsega seni kirjutatud märkide arvu funktsioonile. Tulemus kirjutatakse väärtusele, millele argument osutab lk Kirjutab kursori määratleva rakenduse määratletud märgijada.
Seega on vorminguspetsifikaatori üldine vorming:% (lipud) (laius) (. täpsus) (pikkus) täpsustaja
- vlist: argumentide loend, mis sisaldab kirjutatavaid andmeid.
vswprintf () Tagastusväärtus
- Kui see õnnestub, tagastab funktsioon vswprintf () kirjutatud laiade märkide arvu, välja arvatud lõpetav null-lai märk.
- Negatiivne väärtus tagastatakse, kui esineb kodeerimisviga või kui genereeritavate märkide arv oli võrdne või suurem kui buf_size.
Näide: Kuidas funktsioon vswprintf () töötab?
#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; )
Programmi käivitamisel kirjutatakse aadressile example.txt järgmine:
Araabia tähed: ڄ ڱ ڪ ڣ ڄ