Namespaces
Variants

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

From cppreference.net
bool good ( ) const ;

Devuelve true si la operación de E/S más reciente en el flujo se completó exitosamente. Específicamente, devuelve el resultado de rdstate ( ) == 0 .

Consulte ios_base::iostate para obtener la lista de condiciones que establecen los bits de estado del flujo.

Contenidos

Parámetros

(ninguno)

Valor de retorno

true si todos los indicadores de error del flujo son falsos, false en caso contrario.

Ejemplo

#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. Error al abrir el archivo test.txt - "
                     "uno de los indicadores de error es verdadero\n";
        return EXIT_FAILURE;
    }
    // el bucle típico de E/S de C++ utiliza el valor de retorno de la función de E/S
    // como condición de control del bucle, aquí se utiliza operator bool()
    for (int n; file >> n;)
        std::cout << n << ' ';
    std::cout << '\n';
    if (file.bad()) 
    {
        std::cout << "#2. Error de E/S durante la lectura - badbit es verdadero\n";
        return EXIT_FAILURE;
    } 
    else if (file.eof())
        std::cout << "#3. Fin de archivo alcanzado exitosamente - eofbit es verdadero\n"
            "Esto está bien aunque file.good() sea falso\n"; 
    else if (file.fail())
        std::cout << "#4. Se encontraron datos no enteros - failbit es verdadero\n";
}

Salida posible:

10 11 12 
#4. Se encontraron datos no enteros - failbit es verdadero

Véase también

La siguiente tabla muestra el valor de basic_ios accessors ( good() , fail() , etc.) para todas las combinaciones posibles de ios_base::iostate flags:

ios_base::iostate indicadores basic_ios accesores
eofbit failbit badbit good() fail() bad() eof() operator bool operator!
falso falso falso verdadero falso falso falso verdadero falso
falso falso verdadero falso verdadero verdadero falso falso verdadero
falso verdadero falso falso verdadero falso falso falso verdadero
falso verdadero verdadero falso verdadero verdadero falso falso verdadero
verdadero falso falso falso falso falso verdadero verdadero falso
true false true false true true true false true
verdadero verdadero falso falso verdadero falso verdadero falso verdadero
verdadero verdadero verdadero falso verdadero verdadero verdadero falso verdadero