Программисты больше не нужны!
Нужны ИИ инженеры! Хотите научиться? Вступайте в канал!
471 of 824 menu
◀ ▶

Метод fail

Метод fail класса ios возвращает true, если в потоке установлен флаг ошибки формата или операции. Это означает, что предыдущая операция ввода-вывода завершилась неудачно. Метод не принимает параметров и возвращает значение типа bool.

Флаг failbit устанавливается, когда операция ввода не смогла прочитать ожидаемые данные, например, при попытке считать число там, где находится текст. Флаг badbit устанавливается при более серьёзных ошибках, таких как потеря целостности потока. Метод fail возвращает true, если установлен любой из этих двух флагов.

Синтаксис

bool fail() const;

Пример

Давайте попробуем считать число из строки, где хранится текст, и проверим состояние потока с помощью метода fail:

#include <iostream> #include <sstream> using namespace std; int main() { istringstream iss("abcde"); int num; iss >> num; if (iss.fail()) { cout << "Input failed" << endl; } else { cout << "Input succeeded" << endl; } return 0; }

Результат выполнения кода:

"Input failed"

Пример

Давайте сравним поведение методов fail и good при успешном считывании числа:

#include <iostream> #include <sstream> using namespace std; int main() { istringstream iss("12345"); int num; iss >> num; cout << "fail: " << iss.fail() << endl; cout << "good: " << iss.good() << endl; return 0; }

Результат выполнения кода:

"fail: 0" "good: 1"

Пример

Давайте очистим флаг ошибки с помощью метода clear и снова проверим состояние потока:

#include <iostream> #include <sstream> using namespace std; int main() { istringstream iss("abcde"); int num; iss >> num; cout << "before clear: " << iss.fail() << endl; iss.clear(); cout << "after clear: " << iss.fail() << endl; return 0; }

Результат выполнения кода:

"before clear: 1" "after clear: 0"

Смотрите также

  • метод good,
    который проверяет, что поток не имеет ошибок
  • метод bad,
    который проверяет наличие критической ошибки потока
  • метод eof,
    который проверяет достижение конца файла
  • класс ios,
    который является базовым классом для потоков ввода-вывода
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить