std::basic_ios<CharT,Traits>:: good
|
bool
good
(
)
const
;
|
||
Возвращает true если последняя операция ввода-вывода на потоке завершилась успешно. В частности, возвращает результат rdstate ( ) == 0 .
См. ios_base::iostate для получения списка условий, которые устанавливают биты состояния потока.
Содержание |
Параметры
(нет)
Возвращаемое значение
true если все флаги ошибок потока ложны, false в противном случае.
Пример
#include <cstdlib> #include <fstream> #include <iostream> int main() { const char* fname = "/tmp/test.txt"; std::ofstream ofile{fname}; ofile << "10 " << "11 " << "12 " << "non-int"; ofile.close(); std::ifstream file{fname}; if (!file.good()) { std::cout << "#1. Открытие файла test.txt не удалось - " "один из флагов ошибки установлен\n"; return EXIT_FAILURE; } // типичный цикл ввода-вывода C++ использует возвращаемое значение функции ввода-вывода // как условие управления циклом, здесь используется operator bool() for (int n; file >> n;) std::cout << n << ' '; std::cout << '\n'; if (file.bad()) { std::cout << "#2. Ошибка ввода-вывода при чтении - badbit установлен\n"; return EXIT_FAILURE; } else if (file.eof()) std::cout << "#3. Конец файла успешно достигнут - eofbit установлен\n" "Это нормально, даже если file.good() возвращает false\n"; else if (file.fail()) std::cout << "#4. Обнаружены нецелочисленные данные - failbit установлен\n"; }
Возможный вывод:
10 11 12 #4. Обнаружены нецелочисленные данные - failbit установлен
Смотрите также
В следующей таблице показаны значения basic_ios аксессоров ( good() , fail() и др.) для всех возможных комбинаций ios_base::iostate флагов:
| ios_base::iostate флаги |
basic_ios
аксессоры
|
|||||||
eofbit
|
failbit
|
badbit
|
good() | fail() | bad() | eof() | operator bool | operator! |
| ложь | ложь | ложь | истина | ложь | ложь | ложь | истина | ложь |
| ложь | ложь | истина | ложь | истина | истина | ложь | ложь | истина |
| ложь | истина | ложь | ложь | истина | ложь | ложь | ложь | истина |
| ложь | истина | истина | ложь | истина | истина | ложь | ложь | истина |
| истина | ложь | ложь | ложь | ложь | ложь | истина | истина | ложь |
| истина | ложь | истина | ложь | истина | истина | истина | ложь | истина |
| истина | истина | ложь | ложь | истина | ложь | истина | ложь | истина |
| истина | истина | истина | ложь | истина | истина | истина | ложь | истина |