Funktsiooni vfwscanf () kaustas C ++ kasutatakse laia märgistringi lugemiseks laiast stringipuhvrist.
Funktsioon vfwscanf () on määratletud päisefailis.
vswscanf () prototüüp
int vswscanf (const wchar_t * puhver, const wchar_t * formaat, va_list vlist);
Funktsioon vfwscanf () loeb andmeid laiast stringipuhvrist ja salvestab väärtused vastavatesse asukohtadesse, nagu vlist määratleb.
vswscanf () parameetrid
- puhver: nulliga lõppenud laia stringi kursor andmete lugemiseks.
- formaat: nulliga lõpetatud laia tähemärgi kursor, mis määrab, kuidas sisendit lugeda. See koosneb vorminguspetsifikaatoritest algusega%.
Formaadistringil on järgmised osad:- Muud tühimärgid, välja arvatud%, millest igaüks kulutab sisendvoost ühte identset tähemärki. See võib põhjustada funktsiooni nurjumise, kui voo järgmine märk ei võrdu võrdsega.
- Tühimärk: kõiki järjestikuseid tühimärke käsitletakse ühe tühimärgina. Edasi loetakse tähti ' n', ' t' ja '' samaks.
- Teisenduse spetsifikatsioon: see järgib järgmist vormingut:
- Algne% märk, mis määrab alguse
- Valikuline *, mida nimetatakse määramist summutavaks tähemärgiks. Kui see märk on olemas, ei määra vfwscanf () tulemust ühelegi vastuvõtuargumendile.
- Valikuline positiivne täisarv, mis määrab välja maksimaalse laiuse. See määrab maksimaalse märkide arvu, mida vfwscanf () võib praeguse teisendusspetsifikatsiooniga määratud teisenduse tegemisel tarbida.
- Valikuline pikkuse muutja, mis määrab vastuvõtu argumendi suuruse.
- Teisendusvormingu täpsustaja.
Vorminguspetsifikaator Kirjeldus % Sobib sõna otseses mõttes% c Sobib ühe või mitme tähemärgiga. Kui laius on määratletud, sobib see täpselt laiuse tähemärkidega. s Sobib järjestikuste tühimärkidega. Kui laius on määratletud, vastab see täpselt laiuse tähemärgile või kuni leitakse esimene tühik. (komplekt) Sobib antud tähemärkide komplekti mittetühja jada. Kui hulga alguses on ^, siis sobitatakse kõik tähemärgid, mida pole komplektis. d Sobib kümnendarvuni. i Sobib täisarvuga. o Sobib allkirjastamata kaheksandarvuga. X või x Sobib allkirjastamata kuueteistkümnendsüsteemi täisarvuga. u Sobib allkirjastamata kümnendarvuga. A või a, E või e, F või f, G või g Sobib ujukomaarvuga. n Tagastab seni loetud märkide arvu. lk Vastab rakenduse määratletud märgijärjestusele, mis määrab kursori.
Seega on vorminguspetsifikaatori üldine vorming:% (*) (laius) (pikkus) täpsustaja
- vlist: Sisendite vastuvõtmise argumentide loend.
vswscanf () Tagastusväärtus
- Kui see õnnestub, tagastab funktsioon vfwscanf () edukalt loetud argumentide arvu.
- Rikke korral tagastatakse EOF.
Näide: Kuidas funktsioon vswscanf () töötab?
#include #include #include void read( const wchar_t* buffer, const wchar_t* format,… ) ( va_list args; va_start (args, format); vswscanf (buffer, format, args); va_end (args); ) int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0fd7u00c6u20b9u2127u17d8"; wchar_t str(20); read(symbol, L"%ls", str); wprintf(L"Random Symbols"); for (int i=0; i
When you run the program, a possible output will be:
Random Symbols ࿗ Æ ₹ ℧ ៘