Problème avec ifstream

Signaler
Messages postés
4
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
17 avril 2004
-
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
-
Voilà mon problème:
Je fais un prog en C++ qui est censé lire dans un fichier et trouver certaines information. Pour améliorer la lisibilité de mon code, je l'ai séparé en fonctions. Lorsque je compile (sous VC++) je n'ai aucune erreurs et aucun warning, malgré tout le programme plante.
Voici une partie de mon code:
(D'avance merci à tout ceux qui veulent bien essayer de capter le problème)

#include
#include <fstream>
#include <string>

using namespace std;
// véfrifie sur il n'y a pas de conflit avec le fichier
// retourne le flot d'entrée si tout est OK
ifstream fileOK(string filename)
{
// ouvre le fichier et l'associe au flot "file"
ifstream file(filename.c_str());

if (file.fail()) // s'il y a un problème
{
cerr << "Erreur : impossible de lire le fichier"
<< " de configuration " << filename << endl;
file.close(); // ferme le fichier

return 0;
}
// si tout est OK
else
return file;
}

//------------------------------------------------

/* FONCTION PRINCIPALE */
int main()
{
string filename;
string key;
ifstream file;

cout << "Entrez le nom du fichier à analyser : ";
cin >> filename;

file = fileOK(filename); // ca merde a ce niveau

cout << "Entrez la clef à rechercher : ";
cin >> key;

return 0;
}

2 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
#include
#include <fstream>
#include <string>

using namespace std;
// véfrifie sur il n'y a pas de conflit avec le fichier
// retourne le flot d'entrée si tout est OK
bool fileOK(string filename, ifstream& file)
{
// ouvre le fichier et l'associe au flot "file"
file=ifstream(filename.c_str());

if (file.fail()) // s'il y a un problème
{
cerr << "Erreur : impossible de lire le fichier"
<< " de configuration " << filename << endl;
file.close(); // ferme le fichier

return false;
}
// si tout est OK
return true;
}

//------------------------------------------------

/* FONCTION PRINCIPALE */
int main()
{
string filename;
string key;
ifstream file;

cout << "Entrez le nom du fichier à analyser : ";
cin >> filename;

fileOK(filename,file); // ca merde a ce niveau

cout << "Entrez la clef à rechercher : ";
cin >> key;

return 0;
}
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Il n'a pas trop d'intéret à une telle fonction.

je ne vois pas en quoi ces deux lignes deux codes
ne sont pas lisibles.

  ifstream file( filename.c_str() );
  if ( !file )  { // Erreur d'ouverture en lecture du fichier
     return; // ou gestion d'erreur appropriée
  }