Funkcia ungetwc () v C ++ posúva predtým prečítaný široký znak späť do streamu, aby ho bolo možné prečítať znova.
Funkcia ungetwc () je definovaná v hlavičkovom súbore.
ungetwc () prototyp
wint_t ungetwc (wint_t ch, FILE * stream);
Funkcia ungetwc () posúva široký znak ch späť do medzipamäte spojenej s prúdom súborov, pokiaľ sa ch nerovná WEOF. Ak sa ch rovná WEOF, operácia zlyhá a v prúde sa nezmení.
Hovory na ungetwc () môžu zlyhať, ak sa volajú viackrát bez akejkoľvek operácie čítania alebo premiestňovania v strede.
Ak je volanie na ungetwc () úspešné, koniec príznaku stavu súboru sa vymaže.
Pre textový aj binárny stream úspešné volanie do ungetwc nešpecifikovaným spôsobom upraví indikátor polohy streamu. Je ale zaručené, že po načítaní všetkých znakov vrátenia pomocou operácie čítania sa indikátor polohy streamu rovná jeho hodnote pred volaním ungetwc ().
ungetwc () parametre
- ch: Široký znak, ktorý sa má posunúť späť.
- stream: Stream súborov, kde je široký znak posunutý dozadu.
ungetwc () Vrátená hodnota
- Pri úspechu vráti funkcia ungetwc () znak ch.
- Pri zlyhaní sa vráti WEOF bez zmeny toku.
Príklad: Ako funguje funkcia 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; )
Po spustení programu bude možný výstup:
Hodnota = 719