Funksjonen vswprintf () i C ++ brukes til å skrive en formatert bred streng til en bred strengbuffer.
Funksjonen vswprintf () er definert i topptekstfilen.
vswprintf () prototype
int vswprintf (wchar_t * buffer, size_t buf_size, const wchar_t * format, va_list vlist);
Funksjonen vswprintf () skriver den brede strengen pekt på av format til den brede strengbufferen. Maksimalt (buf_size-1)
brede tegn skrives til buffer som etterfølges av et null bredt tegn.
Bredstrengformatet kan inneholde formatspesifikatorer som begynner med%, som erstattes av verdiene til variabler som sendes som en liste-liste.
vswprintf () Parametere
- buffer: peker til en bred strengbuffer for å skrive resultatet.
- buf_size: Maksimalt antall brede tegn å skrive inkludert det avsluttende nullbrede tegnet.
- format: En peker til en null avsluttet bred streng som er skrevet til buffer. Den består av tegn sammen med valgfrie formatspesifikatorer som begynner med%. Formatspesifikatorene erstattes av verdiene til respektive variabler som følger formatet.
Formatspesifikatoren har følgende deler:- Et ledende% tegn
- Flagg: Valgfritt ett eller flere flagg som endrer konverteringsadferden.
- -: Venstre rettferdiggjør resultatet innenfor feltet. Som standard er det rettferdiggjort.
- +: Tegn på resultatet er festet til begynnelsen av verdien, selv for positive resultater.
- Mellomrom: Hvis det ikke er noe tegn, er et mellomrom festet til begynnelsen av resultatet.
- #: En alternativ form for konvertering utføres.
- 0: Den brukes til heltall og flytende nummer. Ledende nuller brukes til å putte tallene i stedet for mellomrom.
- Bredde: En valgfri * eller heltallverdi som brukes til å spesifisere minimumsbreddefelt.
- Presisjon: Et valgfritt felt som består av en. etterfulgt av * eller heltall eller ingenting for å spesifisere presisjonen.
- Lengde: En valgfri lengdemodifikator som spesifiserer størrelsen på argumentet.
- Spesifikator: En konverteringsformatspesifikator. De tilgjengelige formatspesifikasjonene er som følger:
Format Spesifikator Beskrivelse % Skriver ut% c Skriver et enkelt tegn s Skriver en karakterstreng d eller i Konverterer et signert heltall til desimalrepresentasjon o Konverterer et usignert heltall til oktal representasjon X eller x Konverterer et usignert heltall til heksadesimal representasjon u Konverterer et usignert heltall til desimalrepresentasjon F eller f Konverterer flytende nummer til desimalrepresentasjonen E eller e Konverterer flytende nummer til desimaleksponentnotasjonen A eller a Konverterer flytende nummer til den heksadesimale eksponenten G eller g Konverterer flytende nummer til enten desimal- eller desimaleksponentnotasjon n Returnerer antall tegn som hittil er skrevet av denne samtalen til funksjonen. Resultatet skrives til den verdien argumentet peker på s Skriver en implementeringsdefinert tegnsekvens som definerer en peker.
Så det generelle formatet til formatspesifikatoren er:% (flagg) (bredde) (. presisjon) (lengde) spesifisering
- vlist: En liste med argumenter som inneholder dataene du skal skrive.
vswprintf () Returverdi
- Hvis det lykkes, returnerer vswprintf () -funksjonen antall brede tegn skrevet eksklusive det avsluttende nullbrede tegnet.
- En negativ verdi returneres hvis det oppstår en kodingsfeil eller hvis antall tegn som skal genereres var lik eller større enn buf_size.
Eksempel: Hvordan vswprintf () -funksjonen fungerer?
#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; )
Når du kjører programmet, blir følgende skrevet til example.txt:
Arabiske bokstaver: ڄ ڱ ڪ ڣ ڄ