A C ++ programban az ungetwc () függvény visszaszorítja a korábban beolvasott széles karaktert az adatfolyamba, hogy újra olvasható legyen.
Az ungetwc () függvény a fejlécfájlban van meghatározva.
ungetwc () prototípus
wint_t ungetwc (wint_t ch, FILE * folyam);
Az ungetwc () függvény visszaszorítja a ch széles karaktert a fájlfolyamhoz társított pufferbe, hacsak a ch nem egyenlő a WEOF-mel. Ha a ch értéke megegyezik a WEOF értékkel, a művelet meghiúsul, és az adatfolyamban nincs változás.
Az ungetwc () hívása meghiúsulhat, ha többször hívják meg, anélkül, hogy bármilyen olvasási vagy áthelyezési művelet lenne a közepén.
Ha az ungetwc () meghívása sikeres, a fájl állapotának jelzőjének vége törlődik.
Mind a szöveges, mind a bináris adatfolyam esetében az ungetwc sikeres hívása meghatározatlan módon módosítja az adatfolyam helyzetjelzőt. De garantált, hogy miután az összes visszalépett karakter beolvasásra került egy olvasási művelettel, az adatfolyam-helyzetjelző megegyezik annak értékével, mielőtt meghívná az ungetwc () parancsot.
ungetwc () Paraméterek
- ch: A széles karakter, amelyet vissza kell tolni.
- stream: Fájlfolyam, ahol a széles karaktert visszalökik.
ungetwc () Visszatérési érték
- Siker esetén az ungetwc () függvény visszaadja a ch karaktert.
- Meghibásodás esetén a WEOF visszaküldik az adatfolyam megváltoztatása nélkül.
Példa: Hogyan működik az ungetwc () függvény?
#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; )
A program futtatásakor egy lehetséges kimenet lesz:
Érték = 719