Funkcija vswprintf () C ++ tiek izmantota, lai rakstītu formatētu plašu virkni plaša virknes buferī.
Funkcija vswprintf () ir definēta galvenes failā.
vswprintf () prototips
int vswprintf (wchar_t * buferis, size_t buf_size, const wchar_t * formāts, va_list vlist);
Funkcija vswprintf () plašo virkni, uz kuru norāda formāts, plašā virknes buferī raksta. (buf_size-1)
Buferī tiek ierakstīts ne vairāk kā platas rakstzīmes, kam seko nulles plata rakstzīme.
Plašā virknes formātā var būt formāta specifikatori, kas sākas ar% un tiek aizstāti ar mainīgo vērtībām, kuras tiek nodotas kā saraksta vlist.
vswprintf () parametri
- buferis: rādītājs plaša virknes buferim, lai uzrakstītu rezultātu.
- buf_size: maksimālais rakstāmo plato rakstzīmju skaits, ieskaitot beigu nulles plašo rakstzīmi.
- formāts: rādītājs uz nulli izbeigtu plašu virkni, kas tiek ierakstīta buferī. Tas sastāv no rakstzīmēm un izvēles formātu specifikatoriem, kas sākas ar%. Formātu specifikatori tiek aizstāti ar attiecīgo mainīgo lielumiem, kas seko formātam.
Formāta norādītājam ir šādas daļas:- Vadošā% zīme
- Karodziņi: pēc izvēles viens vai vairāki karodziņi, kas maina reklāmguvuma darbību.
- -: kreisais pamato rezultātu laukā. Pēc noklusējuma tas ir pareizi pamatots.
- +: Rezultāta zīme ir pievienota vērtības sākumam pat pozitīvu rezultātu iegūšanai.
- Telpa: ja nav zīmes, rezultāta sākumam tiek pievienota atstarpe.
- #: Tiek veikta alternatīva konversijas forma.
- 0: to lieto vesels skaitlis un peldošā komata skaitlis. Ciparu ierakstīšanai, nevis atstarpei, tiek izmantotas nulles.
- Platums: izvēles * vai vesela skaitļa vērtība, ko izmanto, lai norādītu minimālā platuma lauku.
- Precizitāte: izvēles lauks, kas sastāv no: seko * vai vesels skaitlis vai nekas, lai precizētu precizitāti.
- Garums: izvēles garuma modifikators, kas norāda argumenta lielumu.
- Specifikators: reklāmguvumu formāta specifikators. Pieejamie formātu specifikatori ir šādi:
Formāta specifikators Apraksts % Izdrukas% c Raksta vienu rakstzīmi s Raksta rakstzīmju virkni d vai i Pārvērš parakstītu veselu skaitli decimāldaļā o Pārvērš neparakstītu veselu skaitli oktālā attēlojumā X vai x Pārvērš neparakstītu veselu skaitli heksadecimālā attēlojumā u Pārvērš neparakstītu veselu skaitli decimāldaļā F vai f Pārvērš peldošā komata skaitli decimāldaļā E vai e Pārvērš peldošā komata skaitli decimāldaļskaitļa eksponenta apzīmējumā A vai a Pārvērš peldošā komata skaitli par heksadecimālo eksponentu G vai g Pārvērš peldošā komata skaitli decimāldaļās vai decimāldaļās eksponentu apzīmējumos n Atgriež funkcijai līdz šim šim izsaukumam rakstīto rakstzīmju skaitu. Rezultāts tiek ierakstīts vērtībā, uz kuru norāda arguments lpp Raksta ieviešanā definētu rakstzīmju secību, kas nosaka rādītāju.
Tātad formāta specifikatora vispārējais formāts ir:% (karodziņi) (platums) (. precizitāte) (garums) specifikators
- vlist: Argumentu saraksts, kas satur ierakstāmos datus.
vswprintf () Atgriežamā vērtība
- Ja tas izdosies, funkcija vswprintf () atgriež rakstīto plato rakstzīmju skaitu, izņemot beigu nulles platu rakstzīmi.
- Negatīva vērtība tiek atgriezta, ja rodas kāda kodēšanas kļūda vai ja ģenerējamo rakstzīmju skaits bija vienāds vai lielāks par buf_size.
Piemērs: Kā darbojas funkcija vswprintf ()?
#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; )
Palaidot programmu, uz example.txt tiks ierakstīts:
Arābu burti: ڄ ڱ ڪ ڣ ڄ