Namespaces
Variants

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

From cppreference.net
bool good ( ) const ;

Gibt true zurück, wenn der letzte E/A-Vorgang auf dem Stream erfolgreich abgeschlossen wurde. Konkret gibt das Ergebnis von rdstate ( ) == 0 zurück.

Siehe ios_base::iostate für die Liste der Bedingungen, die die Stream-Statusbits setzen.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

true wenn alle Stream-Fehlerflags falsch sind, false andernfalls.

Beispiel

#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. Opening file test.txt failed - "
                     "one of the error flags is true\n";
        return EXIT_FAILURE;
    }
    // typical C++ I/O loop uses the return value of the I/O function
    // as the loop controlling condition, operator bool() is used here
    for (int n; file >> n;)
        std::cout << n << ' ';
    std::cout << '\n';
    if (file.bad()) 
    {
        std::cout << "#2. I/O error while reading - badbit is true\n";
        return EXIT_FAILURE;
    } 
    else if (file.eof())
        std::cout << "#3. End of file reached successfully - eofbit is true\n"
            "This is fine even though file.good() is false\n"; 
    else if (file.fail())
        std::cout << "#4. Non-integer data encountered - failbit is true\n";
}

Mögliche Ausgabe:

10 11 12 
#4. Non-integer data encountered - failbit is true

Siehe auch

Die folgende Tabelle zeigt die Werte der basic_ios Accessoren ( good() , fail() , etc.) für alle möglichen Kombinationen der ios_base::iostate Flags:

ios_base::iostate Flags basic_ios Accessoren
eofbit failbit badbit good() fail() bad() eof() operator bool operator!
false false false true false false false true false
false false true false true true false false true
false true false false true false false false true
falsch wahr wahr falsch wahr wahr falsch falsch wahr
wahr falsch falsch falsch falsch falsch wahr wahr falsch
wahr falsch wahr falsch wahr wahr wahr falsch wahr
wahr wahr falsch falsch wahr falsch wahr falsch wahr
wahr wahr wahr falsch wahr wahr wahr falsch wahr