РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
463 of 815 menu

Метод bad

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

Синтаксис

bool bad() const;

Пример

Давайте проверим состояние стандартного потока вывода после успешного вывода строки:

#include <iostream> using namespace std; int main() { cout << "abcde" << endl; if (cout.bad()) { cout << "Stream is bad" << endl; } else { cout << "Stream is good" << endl; } return 0; }

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

"abcde" "Stream is good"

Пример

Давайте сравним поведение методов bad и fail при попытке прочитать число там, где находится текст:

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

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

"bad: 0" "fail: 1"

Как видно из результата, ошибка форматирования устанавливает флаг failbit, но не badbit, поэтому метод bad возвращает false.

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

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