Функцията ungetwc () в C ++ изтласква предварително прочетения широк символ обратно към потока, за да може той да бъде прочетен отново.
Функцията ungetwc () е дефинирана в заглавния файл.
ungetwc () прототип
wint_t ungetwc (wint_t ch, FILE * поток);
Функцията ungetwc () изтласква широкия символ ch обратно към буфера, свързан с файловия поток, освен ако ch не е равно на WEOF. Ако ch е равно на WEOF, операцията се проваля и няма промяна в потока.
Повикванията към ungetwc () може да се провалят, ако са извикани повече от веднъж без операция за четене или преместване в средата.
Ако извикването на ungetwc () е успешно, краят на флага за състояние на файла се изчиства.
Както за текстов, така и за двоичен поток, успешното повикване към ungetwc модифицира индикатора за позиция на потока по неопределен начин. Но е гарантирано, че след като всички изтласкани символи бъдат извлечени с операция за четене, индикаторът за позиция на потока е равен на стойността му преди да извика ungetwc ().
ungetwc () Параметри
- ch: Широкият характер, който трябва да бъде изтласкан.
- поток: Файлов поток, при който широкият символ се изтласква назад.
ungetwc () Върната стойност
- При успех функцията ungetwc () връща символа ch.
- При неуспех WEOF се връща без промяна на потока.
Пример: Как работи функцията 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; )
Когато стартирате програмата, възможният изход ще бъде:
Стойност = 719