Funkcija ungetwc () u C ++-u gura prethodno pročitani široki znak natrag u tok kako bi ga se moglo ponovno pročitati.
Funkcija ungetwc () definirana je u datoteci zaglavlja.
ungetwc () prototip
wint_t ungetwc (wint_t ch, FILE * stream);
Funkcija ungetwc () gura široki znak ch natrag u međuspremnik povezan s protokom datoteke, osim ako je ch jednako WEOF-u. Ako je ch jednak WEOF, operacija ne uspijeva i nema promjena u toku.
Pozivi ungetwc () mogu propasti ako se pozivaju više puta bez ikakve operacije čitanja ili premještanja u sredini.
Ako je poziv na ungetwc () uspješan, izbrisat će se oznaka kraja statusa datoteke.
I za tekstualni i za binarni tok, uspješan poziv ungetwc modificira indikator položaja toka na neodređeni način. No, zajamčeno je da nakon što se svi potisnuti znakovi dohvaćaju operacijom čitanja, pokazatelj položaja streama jednak je svojoj vrijednosti prije pozivanja ungetwc ().
ungetwc () Parametri
- ch: Široki lik koji treba odgurnuti.
- stream: tok datoteke gdje se široki znak gura natrag.
ungetwc () Povratna vrijednost
- U uspjehu funkcija ungetwc () vraća znak ch.
- U slučaju kvara, WEOF se vraća bez promjene streama.
Primjer: Kako funkcionira 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; )
Kada pokrenete program, mogući izlaz bit će:
Vrijednost = 719