Je suis très nouveau dans le monde de la gestion des erreurs C++, mais on m'a dit ici:
Checking for file existence in C++Try-Catch Bloc C++ File-IO erreurs ne fonctionne pas
... que la meilleure façon de contrôles pour l'existence de fichier était avec un bloc try-catch. De mes connaissances limitées sur le sujet, cela semble être un bon conseil. Je trouve ce bout de code:
http://www.java2s.com/Tutorial/Cpp/0240__File-Stream/Readafileintrycatchblock.htm
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
try{
char buffer[256];
ifstream myfile ("test.txt");
while (! myfile.eof())
{
myfile.getline (buffer,100);
cout << buffer << endl;
}
}catch(...){
cout << "There was an error !\n";
}
return 0;
}
... mais quand je compile en utilisant
g++ -Wall -pedantic -o test_prog main.cc
et exécuter le programme dans un répertoire où test.txt n'existe pas, la prog continue de cracher des lignes vides vers le terminal. Quelqu'un peut-il comprendre pourquoi?
Est également ce un bon moyen de vérifier l'existence de fichier pour un fichier que vous voulez ouvrir et lire (par rapport à quelque chose où vous indexez un tas de fichiers et les vérifier)?
Merci!
[Votre logique de lecture de fichier est incorrecte.] (Http://punchlet.wordpress.com/2009/12/01/hello-world/) Et utilisez 'std :: string'. Et les flux n'utilisent pas d'exceptions, par défaut. – GManNickG
Ce n'est pas le mien ... J'ai eu le code d'un site tutoriel, comme je l'ai mentionné;) donc si les flux n'utilisent pas d'exceptions, comment devrais-je détecter les erreurs si le fichier n'existe pas ??? –
Ah. Le site craint alors, pas une surprise. Vous devriez obtenir [un livre] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) si vous voulez vraiment apprendre. – GManNickG