Namespaces
Variants

std::basic_ios<CharT,Traits>:: good

From cppreference.net
bool good ( ) const ;
**Примечание:** В данном фрагменте HTML не содержится переводимого текста, так как: - Все элементы внутри тегов ` ` являются C++ кодом - Ключевые слова C++ (`bool`, `const`) и идентификаторы (`good`) не подлежат переводу согласно требованиям - HTML теги и атрибуты сохранены без изменений

Возвращает 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 флагов:

**Примечание:** В данном фрагменте HTML все текстовые элементы уже являются техническими терминами C++ (флаги состояния потока и названия методов), которые согласно требованиям не подлежат переводу. HTML-разметка и атрибуты сохранены в оригинальном виде.
ios_base::iostate флаги basic_ios аксессоры
eofbit failbit badbit good() fail() bad() eof() operator bool operator!
ложь ложь ложь истина ложь ложь ложь истина ложь
ложь ложь истина ложь истина истина ложь ложь истина
ложь истина ложь ложь истина ложь ложь ложь истина
ложь истина истина ложь истина истина ложь ложь истина
истина ложь ложь ложь ложь ложь истина истина ложь
истина ложь истина ложь истина истина истина ложь истина
истина истина ложь ложь истина ложь истина ложь истина
истина истина истина ложь истина истина истина ложь истина