Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec la l'écriture d'un fichier .txt

14 avril 2019 à 6:40:10

Je vous présente mon problème. 

J'essai de crée un registre de problèmes qui suggère d'inscrire un problème non-résolu dans un fichier texte après 3 tentatives de résolution sans succès. Je souhaite que les nouveau problèmes puissent être inscrit a la suite des autre sans les remplacer et pouvoir consulter les problèmes.

Voici l'extrait comprenant la lecture et l'écriture du fichier :

essai++;
    if (essai==3)
    {
       cout << "y a t-il un probleme ?  (Y/N):" << endl;
       cin >> probleme;
       if(probleme=="y" || probleme=="Y")
       {
           cin.ignore();
           cout << "Quel est le probleme ? :";
           getline (cin, description);
           vector <string> historique;

           ofstream ecrire(problemList.c_str());
           if (ecrire)
           {
               ecrire.seekp(0, ios::end);

               for (int i=0;i<1;++i)
               {
               historique.empty();
               historique.push_back(description);
               ecrire << historique[i] << endl;
               }
           }
       }

           cout << "Le probleme a ete enregistrer" <<endl;
           cout << "Voulez vous consulter la liste de problemes ? (Y/N) : ";
           cin >> consultation;
           if (consultation == "Y" || consultation == "y")
           {
               ifstream lire(problemList);
               getline (lire, memoir);

                  for(auto memoir : memoir)
                  {
                   lire >> memoir;
                  }


                cout << memoir << space <<endl;

           }


 

  • Partager sur Facebook
  • Partager sur Twitter
14 avril 2019 à 11:21:23

Bonjour, a quoi sert ton instruction historique.empty(); ?

Si tu essaies de vider le vecteur utilise plutôt la fonction clear(), la fonction empty est une constante qui renvoie true si le vecteur est vide (si sa taille est de 0) : http://www.cplusplus.com/reference/vector/vector/empty/.

Sinon, il faut que tu places ton curseur en fin de fichier pour écrire à la suite.

  • Partager sur Facebook
  • Partager sur Twitter

Blanc sans N ça fait blac, comme quoi sans haine on est tous égaux.

14 avril 2019 à 13:23:43

Salut

Depuis 2011 le constructeur de std::ofstream accepte une chaîne de caractères de type std::string, inutile d'utiliser c_str() :

std::ofstream fichier {"C:/Users/XxThe/Desktop/Fichier.txt"};


En regardant toujours dans la doc, on voit que que le constructeur ouvre le fichier seulement en écriture en te précisant qu'il efface tout pour réécrire par dessus, pour ton cas tu veux écrire à la suite. En regardant juste en bas dans "Parameters", tu peux voir différents mode d'ouvertures, ce que tu cherches c'est app.

Attention un fichier ne peut être lu et écrit à la fois, c'est l'un des deux, tu devrais avoir une fonction qui lit le fichier et une autre qui écrit dedans.

-
Edité par XxAnoth-ChaxX 14 avril 2019 à 16:59:11

  • Partager sur Facebook
  • Partager sur Twitter