Ungetwc () -funktionen i C ++ skubber det tidligere læste brede tegn tilbage til strømmen, så det kan læses igen.
Funktionen ungetwc () er defineret i headerfilen.
ungetwc () prototype
wint_t ungetwc (wint_t ch, FILE * stream);
Funktionen ungetwc () skubber det brede tegn ch tilbage til bufferen, der er knyttet til filstrømmen, medmindre ch er lig med WEOF. Hvis ch er lig med WEOF, mislykkes operationen, og der er ingen ændring i strømmen.
Opkald til ungetwc () kan mislykkes, hvis det kaldes mere end én gang uden nogen læsning eller omplacering i midten.
Hvis et opkald til ungetwc () er vellykket, slettes slutningen af filstatusflagfeof.
For både tekst og binær stream ændrer et vellykket opkald til ungetwc streampositionsindikatoren på en uspecificeret måde. Men det er garanteret, at efter at alle skubbet-tegn er hentet med en læseoperation, er streampositionsindikatoren lig med dens værdi, før der kaldes ungetwc ().
ungetwc () Parametre
- ch: Den brede karakter, der skal skubbes tilbage.
- stream: File stream hvor det brede tegn skubbes tilbage.
ungetwc () Returværdi
- Efter succes returnerer funktionen ungetwc () tegnet ch.
- I tilfælde af fejl returneres WEOF uden at ændre strømmen.
Eksempel: Hvordan fungerer 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; )
Når du kører programmet, vil en mulig output være:
Værdi = 719