C ++ vfwscanf () - C ++ Standardbibliotek

Funksjonen vfwscanf () i C ++ brukes til å lese bred tegnstreng fra en filstrøm.

Funksjonen vfwscanf () er definert i topptekstfilen.

vfwscanf () prototype

 int vfwscanf (FILE * stream, const wchar_t * format, va_list vlist);

Funksjonen vfwscanf () leser dataene fra filstrømstrømmen og lagrer verdiene på de respektive stedene som definert av vlist.

vfwscanf () Parametere

  • stream: Inngang filstrøm for å lese dataene fra.
  • format: peker til en null-avsluttet bred tegnstreng som spesifiserer hvordan du skal lese inngangen. Den består av formatspesifikatorer som begynner med%.
    Formatstrengen har følgende deler:
    • Ikke tegn mellomrom unntatt% som hver bruker ett identisk tegn fra inngangsstrømmen. Det kan føre til at funksjonen mislykkes hvis neste tegn på strømmen ikke sammenligner like.
    • Hvitt mellomromstegn: Alle påfølgende tegn i hvitt mellomrom blir behandlet som ett hvitt mellomromstegn. Videre anses ' n', ' t' og '' som de samme.
    • Konverteringsspesifikasjon: Den følger følgende format:
      • Innledende% tegn som spesifiserer begynnelsen
      • En valgfri * kalt oppdragsdempende karakter. Hvis dette tegnet er tilstede, tildeler ikke vfwscanf () resultatet til noe mottaksargument.
      • Et valgfritt positivt heltall som spesifiserer maksimal feltbredde. Den spesifiserer det maksimale antall tegn som vfwscanf () har lov til å konsumere når konverteringen er spesifisert av gjeldende konverteringsspesifikasjon.
      • En valgfri lengdemodifikator som angir størrelsen på mottaksargumentet.
      • En konverteringsformatspesifikator.
    Formatspesifikatorer
    Format Spesifikator Beskrivelse
    % Matcher bokstavelig%
    c Matcher et enkelt tegn eller flere tegn. Hvis bredde er definert, samsvarer den nøyaktig med tegn i bredden.
    s Matcher påfølgende ikke-mellomromstegn. Hvis bredde er definert, samsvarer den nøyaktig med tegn i bredden eller til første hvite mellomrom er funnet.
    (sett) Matcher en ikke-tom sekvens av tegn fra det gitte settet med tegn. Hvis er tilstede i begynnelsen av settet, samsvarer alle tegnene som ikke er i settet.
    d Matcher et desimaltall.
    Jeg Matcher et heltall.
    o Matcher et usignert oktalt heltall.
    X eller x Matcher et usignert heksadesimalt heltall.
    u Matcher et usignert desimaltall.
    A eller a, E eller e, F eller f, G eller g Matcher et flytende nummer.
    n Returnerer antall tegn som er lest hittil.
    s Matcher en implementeringsdefinert tegnsekvens som definerer en peker.

    Så det generelle formatet til formatspesifikatoren er:
     % (*) (bredde) (lengde) spesifikator
  • vlist: En liste over argumenter for å motta inngangene.

vfwscanf () Returverdi

  • Hvis vellykket, returnerer funksjonen vfwscanf () antall argumenter som er lest.
  • Ved feil returneres EOF.

Eksempel: Hvordan fungerer vfwscanf ()?

 #include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )

Når du kjører programmet, vil en mulig utgang være:

 क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga

Interessante artikler...