Funktionen ungetwc () i C ++ skjuter tillbaka den tidigare lästa breda karaktären till strömmen så att den kan läsas igen.
Funktionen ungetwc () definieras i rubrikfilen.
ungetwc () prototyp
wint_t ungetwc (wint_t ch, FILE * stream);
Funktionen ungetwc () skjuter det breda tecknet ch tillbaka till bufferten som är associerad med filströmmen såvida inte ch är lika med WEOF. Om ch är lika med WEOF misslyckas operationen och det finns ingen förändring i strömmen.
Samtal till ungetwc () kan misslyckas om det anropas mer än en gång utan läs- eller ompositioneringsåtgärder i mitten.
Om ett samtal till ungetwc () lyckas rensas slutet av filstatusflaggfef.
För både text- och binärström ändrar ett framgångsrikt samtal till ungetwc strömpositionens indikator på ett ospecificerat sätt. Men det garanteras att efter att alla tillbakadragna tecken har hämtats med en läsoperation är strömpositionens indikator lika med dess värde innan ungetwc () anropas.
ungetwc () Parametrar
- ch: Den breda karaktären som ska skjutas tillbaka.
- stream: File stream där den breda karaktären skjuts tillbaka.
ungetwc () Returvärde
- Vid framgång returnerar funktionen ungetwc () tecknet ch.
- Vid misslyckande returneras WEOF utan att strömmen ändras.
Exempel: Hur fungerar ungetwc () -funktionen?
#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; )
När du kör programmet blir en möjlig utdata:
Värde = 719