Vérifier si un fichier s'est correctement ouvert avec ifstream
J'ai le texte suivant qui va ouvrir un fichier pour le lire. Cependant, je veux vérifier que le fichier a été ouvert avec succès, je suis donc à l'aide de l'échec pour voir si les indicateurs ont été définies. Cependant, je reçois l'erreur suivante:
Je suis novice en C++, comme je viens de C. Donc, pas sûr que je comprends cette erreur:
ne peut pas appeler la fonction membre ‘bool std::basic_ios<_CharT,
_Traits>::fail() const [avec _CharT = char, _Traits = std::char_traits] " sans objet
Code:
int devices::open_file(std::string _file_name)
{
ifstream input_stream;
input_stream.open(_file_name.c_str(), ios::in);
if(ios::fail() == true) {
return -1;
}
file_name = _file_name;
return 0;
}
source d'informationauteur ant2009
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement faire ceci:
fail() n'est pas une méthode statique, vous devez appeler une instance pas un type, donc si vous souhaitez utiliser fail(), remplacer
!input_stream
avecinput_stream.fail()
dans mon code ci-dessus.J'ai à me demander ce que vous essayez d'atteindre ici. Vous êtes de l'ouverture du fichier et refermer immédiatement. Vous êtes tout simplement essayer de vérifier si le fichier existe?
Votre erreur est parce que vous êtes à l'aide de
ios::fail()
comme une méthode statique quand il est en fait un membre de la méthode.vous pouvez également utiliser
std::ifstream::is_open
. Retourne true si le fichier est ouvert et associé à cet objet de flux de données.http://www.cplusplus.com/reference/fstream/ifstream/is_open/
Vous devez appeler fail() sur l'objet de flux de données. Plus idiomatiques façon de le faire est: