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

Функция ungetwc () в C ++ отправляет ранее прочитанный широкий символ обратно в поток, чтобы его можно было прочитать снова.

Функция ungetwc () определена в заголовочном файле.

прототип ungetwc ()

 wint_t ungetwc (wint_t ch, FILE * поток);

Функция ungetwc () выталкивает широкий символ ch обратно в буфер, связанный с файловым потоком, если ch не равно WEOF. Если ch равно WEOF, операция завершается неудачно и поток не изменяется.

Вызов ungetwc () может завершиться ошибкой, если он вызывается более одного раза без какой-либо операции чтения или изменения положения в середине.

Если вызов ungetwc () успешен, флаг состояния конца файла feof сбрасывается.

И для текстового, и для двоичного потока успешный вызов ungetwc изменяет индикатор положения потока неопределенным образом. Но гарантируется, что после того, как все возвращенные символы извлечены с помощью операции чтения, индикатор позиции потока будет равен своему значению перед вызовом ungetwc ().

Параметры ungetwc ()

  • ch: широкий символ, который нужно отодвинуть.
  • stream: файловый поток, в котором широкий символ выталкивается назад.

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

Интересные статьи...