Funcția ungetwc () din C ++ împinge caracterul larg citit anterior înapoi în flux, astfel încât să poată fi citit din nou.
Funcția ungetwc () este definită în fișierul antet.
ungetwc () prototip
wint_t ungetwc (wint_t ch, FILE * stream);
Funcția ungetwc () împinge caracterul larg ch înapoi în memoria tampon asociată cu fluxul de fișiere, cu excepția cazului în care ch este egal cu WEOF. Dacă ch este egal cu WEOF, operația eșuează și nu există nicio modificare în flux.
Apelurile către ungetwc () pot eșua dacă sunt apelate de mai multe ori fără nicio operație de citire sau repoziționare în mijloc.
Dacă un apel către ungetwc () are succes, sfârșitul semnalizării stării fișierului feof este șters.
Atât pentru text cât și pentru fluxul binar, un apel reușit către ungetwc modifică indicatorul de poziție a fluxului într-un mod nespecificat. Dar este garantat că după ce toate caracterele împinse înapoi sunt recuperate cu o operație de citire, indicatorul poziției fluxului este egal cu valoarea sa înainte de a apela ungetwc ().
ungetwc () Parametri
- ch: Caracterul larg care trebuie împins înapoi.
- flux: flux de fișiere în care caracterul larg este împins înapoi.
ungetwc () Valoare returnată
- La succes, funcția ungetwc () returnează caracterul ch.
- În caz de eșec, WEOF este returnat fără a schimba fluxul.
Exemplu: Cum funcționează funcția 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; )
Când rulați programul, o posibilă ieșire va fi:
Valoare = 719