C ++ ungetwc () - Стандартна бібліотека C ++

Функція 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

Цікаві статті...