Funkcija ungetwc () v jeziku C ++ potisne prej prebrani široki znak nazaj v tok, da ga je mogoče znova prebrati.
Funkcija ungetwc () je definirana v datoteki glave.
prototip ungetwc ()
wint_t ungetwc (wint_t ch, FILE * tok);
Funkcija ungetwc () potisne široki znak ch nazaj v medpomnilnik, povezan s tokom datoteke, razen če je ch enak WEOF. Če je ch enako WEOF, operacija ne uspe in tok ni spremenjen.
Klici ungetwc () lahko propadejo, če so poklicani večkrat brez kakršnega koli branja ali premeščanja na sredini.
Če je klic ungetwc () uspešen, se oznaka zastavice konca datoteke počisti.
Tako za besedilni kot za binarni tok uspešen klic ungetwc spremeni indikator položaja toka na neopredeljen način. Zagotovljeno pa je, da je po tem, ko so vsi potisnjeni znaki pridobljeni z operacijo branja, indikator položaja toka enak svoji vrednosti pred klicem ungetwc ().
ungetwc () Parametri
- ch: Širok znak, ki ga je treba potisniti nazaj.
- tok: tok datoteke, kjer je širok znak potisnjen nazaj.
ungetwc () Vrnjena vrednost
- Po uspehu funkcija ungetwc () vrne znak ch.
- Ob okvari se vrne WEOF, ne da bi spremenili tok.
Primer: Kako deluje funkcija ungetwc ()?
#include #include #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wint_t c; long value = 0; wchar_t str() = L"u0037u0031u0039u00b6u03ee"; FILE *fp = fopen("file.txt", "r+"); fputws(str,fp); rewind(fp); while(1) ( c = fgetwc(fp); if (iswdigit(c)) value = value*10 + c - L'0'; else break; ) ungetwc(c, fp); cout << "Value = " << value << endl; fclose(fp); return 0; )
Ko zaženete program, bo možen izhod:
Vrednost = 719