Namespaces
Variants

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

From cppreference.net
bool good ( ) const ;

Retourne true si la dernière opération d'E/S sur le flux s'est terminée avec succès. Plus précisément, retourne le résultat de rdstate ( ) == 0 .

Voir ios_base::iostate pour la liste des conditions qui définissent les bits d'état du flux.

Table des matières

Paramètres

(aucun)

Valeur de retour

true si tous les indicateurs d'erreur du flux sont faux, false sinon.

Exemple

#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. Échec de l'ouverture du fichier test.txt - "
                     "un des indicateurs d'erreur est vrai\n";
        return EXIT_FAILURE;
    }
    // la boucle d'E/S typique en C++ utilise la valeur de retour de la fonction d'E/S
    // comme condition de contrôle de boucle, operator bool() est utilisé ici
    for (int n; file >> n;)
        std::cout << n << ' ';
    std::cout << '\n';
    if (file.bad()) 
    {
        std::cout << "#2. Erreur d'E/S lors de la lecture - badbit est vrai\n";
        return EXIT_FAILURE;
    } 
    else if (file.eof())
        std::cout << "#3. Fin de fichier atteinte avec succès - eofbit est vrai\n"
            "Ceci est correct même si file.good() est faux\n"; 
    else if (file.fail())
        std::cout << "#4. Données non entières rencontrées - failbit est vrai\n";
}

Sortie possible :

10 11 12 
#4. Données non entières rencontrées - failbit est vrai

Voir aussi

Le tableau suivant présente la valeur des basic_ios accesseurs ( good() , fail() , etc.) pour toutes les combinaisons possibles des ios_base::iostate flags :

ios_base::iostate indicateurs basic_ios accesseurs
eofbit failbit badbit good() fail() bad() eof() operator bool operator!
faux faux faux vrai faux faux faux vrai faux
faux faux vrai faux vrai vrai faux faux vrai
faux vrai faux faux vrai faux faux faux vrai
false true true false true true false false true
vrai faux faux faux faux faux vrai vrai faux
vrai faux vrai faux vrai vrai vrai faux vrai
vrai vrai faux faux vrai faux vrai faux vrai
vrai vrai vrai faux vrai vrai vrai faux vrai