Les fichiers : lecture, écriture (help)

Les fichiers : lecture, écriture (help) - C++ - Programmation

Marsh Posté le 12-06-2008 à 16:10:50    

Bonjour, je souhaite réaliser une gestion de clients en c++, c'est à dire me permettre d'afficher, ajouter, modifier ou supprimer un client qui serait présent dans un fichier texte a chaque ajout.  
J'ai réalisé classe.h regroupant la classe mere, mon souci est que je ne sais pas comment manier une lecture, ecriture ou suppression dans un fichier, j'aimerais si possible un exemple.  
classe.h

Code :
  1. #include <iostream>
  2. #include <string>
  3. class PERSONNE
  4. {
  5. protected:
  6. std::string adresse;
  7. std::string cp;
  8. std::string ville;
  9. int annee_entree;
  10. int annee_sortie;
  11. public:
  12. void afficher();
  13. void add();
  14. void del();
  15. };
  16. class CLIENT :public PERSONNE
  17. {
  18. private:
  19. std::string nom;
  20. std::string prenom;
  21. public:
  22. CLIENT();
  23. CLIENT(const std::string& _nom, const std::string& prenom ,const std::string & add,const std::string& _cp,const std::string& _ville,int _entree, int _sortie)
  24. {
  25. nom= _nom;
  26. prenom= _prenom;
  27. adresse=_add;
  28. cp=_cp;
  29. ville=_ville;
  30. annee_entree=_entree;
  31. annee_sortie=_sortie;
  32. }
  33. void afficher();
  34. void add();
  35. void del();
  36. };


 
 
main.cpp
 

Code :
  1. #include "classes.h"
  2. CLIENT::CLIENT():PERSONNE()
  3. {}
  4. void CLIENT::afficher()
  5. {
  6. //nom|prenom|adresse|cp|ville|année entre| année sortis  
  7. using namespace std;
  8. cout << prenom << adresse << cp << ville << annee_entree << annee_sortie << endl;
  9. }
  10. void CLIENT::add()
  11. { }
  12. void CLIENT::del()
  13. {}


 
je cherche a faire les procedures add et del = ajouter et supprimer


Message édité par cathy9999 le 12-06-2008 à 16:11:43
Reply

Marsh Posté le 12-06-2008 à 16:10:50   

Reply

Marsh Posté le 12-06-2008 à 16:32:05    

Pour la gestion des fichiers en C++, il faut manier les stream.
 
Plus d'infos ici : http://www.cplusplus.com/reference/iostream/fstream/

Reply

Marsh Posté le 12-06-2008 à 16:42:38    

je sais tout cela mais je ne comrpend rien, il me faut un exemple

Reply

Marsh Posté le 12-06-2008 à 16:59:36    

Code :
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int main (void) {
  7.   fstream filestr ("foo.bar", fstream::in | fstream::out | fstream::app);
  8.  
  9.   if ( filestr.is_open() ) {
  10.     filestr << "its teh mighty example, lol\n";
  11.  
  12.     filestr.seekg(ios_base::beg);
  13.  
  14.     string foobar;
  15.     getline(filestr, foobar);
  16.     cout << foobar << endl;
  17.  
  18.     filestr.close();
  19.   }
  20.   else
  21.      cerr << "FAIL§§§\n";
  22.  
  23.   return 0;
  24. }
 


C'est pas comme s'il n'y en avait pas, des snippets, sur le site que j'ai indiqué. [:dawao]


Message édité par Elmoricq le 12-06-2008 à 17:16:52
Reply

Marsh Posté le 12-06-2008 à 17:23:35    

oui mais un exemple par rapport a ma classe, comment le fichier va recuperer les données?

Reply

Marsh Posté le 12-06-2008 à 17:28:43    

Hmm. C'est un exemple que tu veux, ou qu'on te le fasse ? :??:
 
Qu'est-ce que tu ne comprends pas dans l'utilisation des streams ?

Reply

Marsh Posté le 12-06-2008 à 17:35:48    

ben jprefere etre franche et qu'on me fasse juste pour la fonction de l'ajouter dans un fichier ! pour quelqu'un de debutant comme moi, c'est difficile de comprendre avec une autre structure que la sienne qu'on a realisé..je prefere dire la verité

Reply

Marsh Posté le 12-06-2008 à 17:39:11    

En ce cas, ta demande est hors charte, il est interdit de demander du travail tout fait.
 
Merci de lire les règles de la section Programmation : http://forum.hardware.fr/forum2.ph [...] 544&cat=10

Reply

Marsh Posté le 12-06-2008 à 17:47:41    

Mais je demande pas un travail tout fait! je demande qu'on me montre le fonctionnement d'une fonction add qui ajouterais dans un fichier

Reply

Marsh Posté le 12-06-2008 à 17:56:33    

Ben y a un exemple juste au-dessus. [:mlc]
 
J'ouvre filestr, et ensuite j'y colle "its teh mighty example" avec l'opérateur <<.

Reply

Marsh Posté le 12-06-2008 à 17:56:33   

Reply

Marsh Posté le 12-06-2008 à 18:06:04    

Elmoricq a écrit :

En ce cas, ta demande est hors charte, il est interdit de demander du travail tout fait.

 

Merci de lire les règles de la section Programmation : http://forum.hardware.fr/forum2.ph [...] 544&cat=10

 

:lol:

 

Sinon remplace main par add et tu aura en gros ton exemple mais bon c'est laid :o

 


Message édité par kyntriad le 12-06-2008 à 18:07:02

---------------
You can't start a fire with moonlight
Reply

Marsh Posté le 12-06-2008 à 18:17:48    

#include <iostream>
#include <fstream>  
 
using namespace std;  
int main (void)  
{   fstream filestr ("test.txt", fstream::in | fstream::out | fstream::app);    
   if ( filestr.is_open() ) {      
filestr << prenom << adresse << cp << ville << annee_entree << annee_sortie << endl;      
  filestr.seekg(ios_base::beg);        
string foobar;      
getline(filestr, foobar);      
cout << foobar << endl;    
  filestr.close();    
}    
else    
  cerr << "FAIL§§§\n";    
 return 0;
}
 
est ce comme cela?

Reply

Marsh Posté le 12-06-2008 à 19:02:16    

Tu peux vérifier par toi-même en fait, genre en utilisant un compilateur et en faisant tourner ton programme.
 
Si ça t'affiche ce que tu veux c'est que c'est ok en l'occurence. Sinon t'en déduit ce qu'il y a a déduire et tu corriges...


---------------
You can't start a fire with moonlight
Reply

Marsh Posté le 13-06-2008 à 10:24:30    

cathy9999 a écrit :

#include <iostream>
#include <fstream>

 

using namespace std;
int main (void)
{   fstream filestr ("test.txt", fstream::in | fstream::out | fstream::app);  
   if ( filestr.is_open() ) {    
filestr << prenom << adresse << cp << ville << annee_entree << annee_sortie << endl;    
  filestr.seekg(ios_base::beg);        
string foobar;    
getline(filestr, foobar);    
cout << foobar << endl;    
  filestr.close();  
}  
else    
  cerr << "FAIL§§§\n";  
 return 0;
}

 

est ce comme cela?

 

Ce n'est pas plus compliqué en effet. [:romf]
Mais comprends-tu ce que fais ce code ?
Car en fait, il écrit dans le fichier (opérateur << ), puis il se replace au tout début du fichier (seekg), et il lit la première ligne (getline) pour l'afficher (cout << ).

 

D'ailleurs, comme tu peux le remarquer, l'utilisation de cout ressemble étrangement à ce que tu fais pour écrire dans un fichier. Eh bien c'est normal : cout est un stream, sauf qu'au lieu de taper dans un fichier, il tape sur la sortie standard (i.e. l'écran dans la majeure partie des cas).


Message édité par Elmoricq le 13-06-2008 à 10:24:48
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed