Problème de lecture de fichier avec Qt

Problème de lecture de fichier avec Qt

by Eliott Adrien Rene Mea -
Number of replies: 4

Bonjour,

j'ai fait le code test suivant car j'ai besoin de lire un fichier, cependant en le testant sur Geany il marche très bien et je peux lire le texte dans mon fichier mais sous Qt j'ai le message d'erreur comme quoi le fichier ne peut pas être ouvert. Voici le code en question: 

int main()

{

   ifstream fichier("text.txt");

   if(fichier)

   {

       cout << "Bravo: Le Fichier est ouvert." << endl;

      string ligne; //stocker le contenu lu

      while(getline(fichier, ligne)) 

      {

         cout << ligne << endl; 

      }

      fichier.close();

   }

   else

   {

      cout << "erreur le fichier ne peut pas être ouvert." << endl;

   }

   return 0;

}

Je ne comprend pas pourquoi le code ne marche que sur Geany. J'ai envoyé mon code à un autre élève pour voir si l'erreur persistait et en effet lui aussi ne peut que lire le fichier sur Geany. Sauriez vous pourquoi ?

In reply to Eliott Adrien Rene Mea

Re: Problème de lecture de fichier avec Qt

by Eliott Adrien Rene Mea -

Update,

j'ai fait des test avec des fichiers pour écrire dedans et ce que je remarque c'est que quand je modifie le fichier directement en l'ouvrant (sans passer par Qt) et quand je veux afficher le contenu ca ne m'affiche rien. Cependant quand je le modifie à travers un fichier en utilisant un code sur Qt, je constante deux choses : 

- quand j'ouvre mon fichier directement (sans passer par Qt) alors rien n'est modifié

-quand je lis le fichier avec un code sur Qt alors il lit seulement la partie écrite par mon code Qt

Y'aurait-il quelque chose qui fait que le fichier .txt dans lequel j'écris est modifié et copié quelque part d'autre ? Je ne comprend pas pourquoi il arrive seulement à lire ce que Qt lui même à écrit dans ce fichier.

In reply to Eliott Adrien Rene Mea

Re: Problème de lecture de fichier avec Qt

by Deleted user -

Quand tu parles de Qt, tu veux dire que tu compiles ton code dans Qt Creator? Et aussi, quand tu testes ton ifstream, il me semble que la syntaxe "if(fichier.fail())" ou "if(fichier.is_open())" serait plus adaptée.

Cela dit, es-tu sûr que tu compiles tes deux programmes au même endroit? Et comment les lances-tu?

Il est possible que Qt Creator ait placé ton exécutable dans un dossier séparé, et que tu ne t'en sois pas rendu compte en lançant le programme depuis QtC.

In reply to Deleted user

Re: Problème de lecture de fichier avec Qt

by Eliott Adrien Rene Mea -

 Merci pour ta réponse! Oui effectivement je parle de Qt Creator! Peut-être que la syntaxe est plus adaptée mais ça ne change rien ( oui j’ai essayé ! ) 

Pour le cas où QtC mettrait l’exécutable dans un autre dossier j’ai bien vérifié tout est ok! Mais ça ne fonctionne quand même pas! 

In reply to Eliott Adrien Rene Mea

Re: Problème de lecture de fichier avec Qt

by Jean-Cédric Chappelier -

je pense aussi que Qt Creator lance l'exécutable depuis un autre dossier. Pour être sûr que c'est ça la source du problème, mettez le nom ABSOLU du fichier dans votre code, genre (à adapter, bien sûr !) :

   ifstream fichier("/home/nom/je/ne/sais/ou/cpp/projet/text.txt");

Si ce code fonctionne sous Geany (commencez par là pour être sûr du nom absolu) et sous Qt Creator, c'est que c'est effectivement un problème de chemin relatif = d'exécutable lancé depuis un autre répertoire.