Funkce ungetwc () v C ++ posune dříve načtený široký znak zpět do streamu, aby jej bylo možné znovu načíst.
Funkce ungetwc () je definována v hlavičkovém souboru.
ungetwc () prototyp
wint_t ungetwc (wint_t ch, FILE * stream);
Funkce ungetwc () posune široký znak ch zpět do vyrovnávací paměti přidružené k proudu souboru, pokud ch není rovno WEOF. Pokud ch je rovno WEOF, operace selže a nedojde ke změně proudu.
Volání funkce ungetwc () může selhat, pokud je volána více než jednou bez jakékoli operace čtení nebo přemístění uprostřed.
Je-li volání ungetwc () úspěšné, konec příznaku stavu souboru se vymaže.
U textového i binárního proudu úspěšné volání ungetwc upraví indikátor polohy proudu nespecifikovaným způsobem. Je však zaručeno, že po načtení všech znaků, které byly vráceny pomocí operace čtení, se indikátor polohy proudu rovná jeho hodnotě před voláním ungetwc ().
ungetwc () parametry
- ch: Široký znak, který má být odsunut.
- stream: Stream souborů, kde je široký znak posunut zpět.
ungetwc () Vrátí hodnotu
- Při úspěchu vrátí funkce ungetwc () znak ch.
- Při selhání se vrátí WEOF bez změny proudu.
Příklad: Jak funguje funkce 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; )
Při spuštění programu bude možný výstup:
Hodnota = 719