Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1663 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  C++ objets et fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C++ objets et fichiers

n°697748
laurentino
Posté le 12-04-2004 à 16:40:36  profilanswer
 

Bonjour,  
 
J'ai une classe employé qui contient 3 strings (nom,prenom et poste) et 2 int (age et numero). ( C++ )
J'aurais voulu savoir comment stocker toutes ces données dans un fichier qui me permettrait
- de rajouter des elements par la suite.
- de modifier les informations d un employé.
- de consulter les info d un ou de la totalité des employés.
 
Merci d avance.

mood
Publicité
Posté le 12-04-2004 à 16:40:36  profilanswer
 

n°697761
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 18:22:12  profilanswer
 

Si tu sais ecrire un string dans un fichier alors voila le bout de code qu'il te manque. Petite limitation, les champs string de ta classe contiennent un seul mot.
 

Code :
  1. struct employe
  2. {
  3. std::string nom;
  4. std::string prenom;
  5. std::string poste;
  6. int age;
  7. int numero;
  8. employe() : nom("" ), prenom("" ), poste("" ), age(0), numero(0) {}
  9. employe( const std::string & nm, const std::string & pnm, const std::string & p, const int & a, const int & n ) :
  10. nom(nm), prenom(pnm), poste(p), age(a), numero(n) {}
  11. std::string Serialize() const
  12. {
  13. std::ostringstream strTemp("" );
  14. strTemp << nom << " " << prenom << " " << poste << " " << age << " " << numero << std::endl;
  15. return strTemp.str();
  16. }
  17. void Deserialize( const std::string & s)
  18. {
  19. std::istringstream strTemp(s);
  20. strTemp >> nom >> prenom >> poste >> age >> numero;
  21. }
  22. };


 
--edit, un main d'exemple:
 

Code :
  1. int main()
  2. {
  3. std::string strTemp("" );
  4. {
  5. employe toto("laurentino","jcpas","clown",98,13); // désolé ;)
  6. std::cout << toto.Serialize(); // verif
  7. strTemp = toto.Serialize(); // conversion en string pour l'ecriture
  8. }
  9. // ecrire strTemp dans un fichier texte....
  10. std::cout << strTemp;
  11. // lecture strTemp dans le fichier texte...
  12. {
  13. employe titi; // création d'un employé vide
  14. titi.Deserialize(strTemp); // initialisation à partir de la lecture
  15. std::cout << titi.Serialize(); // verif
  16. }
  17. }


A tester.
Xter.


Message édité par xterminhate le 12-04-2004 à 18:41:22
n°697783
laurentino
Posté le 12-04-2004 à 18:46:12  profilanswer
 

Je vais tester tout de suite...
Juste une petite question,  
Struct et class c est la meme chose ?
je te tiens au courant si ca marche.
MERCI!

n°697807
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 19:01:46  profilanswer
 

Je ne maitrisie pas toutes les subitlités mais ...
 
Il me semble que class permet de classifier les membres en public: , protected: ou private: contrairement à struct dont tous les membres sont publics.
 
Pour le reste, struct et class sont similaires.
 
Cordialement,
 xter.

n°697809
laurentino
Posté le 12-04-2004 à 19:13:55  profilanswer
 

Ouais d accord merci  
 
mais le const dans "std::string Serialize() const"  
 
ca signifie quoi ?
 
merci

n°697811
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 19:16:13  profilanswer
 

Const signifie dans ce contexte que la fonction membre Serialize() s'execute sans rien modifier au contenu de la structure/classe. Ca doit sans doute aider le compilo à optiliser le code qui en découle...
 
Cordialement,
  xter.

n°697813
laurentino
Posté le 12-04-2004 à 19:22:22  profilanswer
 

Message d erreur ...
11 C:\Laurent\Pre\employe.cpp
variable `std::ostringstream strTemp' has initializer but  
 
pas de suite, peut un #include a ajouter ?

n°697815
laurentino
Posté le 12-04-2004 à 19:25:02  profilanswer
 

trouvé : #include <sstream>

n°697817
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 19:29:12  profilanswer
 

oui j'avais oublié ...
#include <string>
#include <sstream>
#include <iostream>

n°697818
laurentino
Posté le 12-04-2004 à 19:37:51  profilanswer
 

CA MARCHE !!!!!
Merci t es un pote !!!!!
J'avais vraiment besoin que ca marche pour demain....
J ai pas regardé toutes les subtilitées mais en tout cas je te remercie enormement! tu peux pas savoir a quel point je te suis reconnaissant.

mood
Publicité
Posté le 12-04-2004 à 19:37:51  profilanswer
 

n°697824
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 19:57:16  profilanswer
 

laurentino a écrit :

CA MARCHE !!!!!
Merci t es un pote !!!!!
J'avais vraiment besoin que ca marche pour demain....
J ai pas regardé toutes les subtilitées mais en tout cas je te remercie enormement! tu peux pas savoir a quel point je te suis reconnaissant.


 
Prends le temps de regarder !!  :o  J'ai bien pris le temps de te le coder.
 
Sinon, de rien.
 
Cordialement,
   xter.


Message édité par xterminhate le 12-04-2004 à 19:57:38

---------------
Cordialement, Xterm-in'Hate...
n°697825
laurentino
Posté le 12-04-2004 à 20:02:11  profilanswer
 

Sinon tu sais pas comment on ecrit sur un fichier contenant deja des trucs sans effacer ce qu il contenait ?
J ai cherchait partout...
Je trouve qu une solution pour le moment c est de creer un dossier temporaire recopier l'ancien fichier de donneés,et y rajouter tout ce qu on veut rajouter mais ca peut s averer long quand on a un gros fichier.
 
Merci @++

n°697829
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 20:06:33  profilanswer
 

L'ouverture du fichier
 

Code :
  1. // ajouter dans le main() :
  2. // ecrire strTemp dans un fichier texte....
  3. std::ofstream fichier( "nom_fichier.txt", std::ofstream::app);
  4. fichier << strTemp;


 
 
Penser à #include<fstream>.
 
Xter.


---------------
Cordialement, Xterm-in'Hate...
n°697830
blackgodde​ss
vive le troll !
Posté le 12-04-2004 à 20:08:29  profilanswer
 

xterminhate a écrit :

Je ne maitrisie pas toutes les subitlités mais ...
 
Il me semble que class permet de classifier les membres en public: , protected: ou private: contrairement à struct dont tous les membres sont publics.
 
Pour le reste, struct et class sont similaires.
 
Cordialement,
 xter.


 
une classe et une struct ont comme seule difference que par défaut, dans une classe, les membres sont privés, dans une struct ils sont public.
 

Code :
  1. class test1
  2. {
  3.   int i; // i est privé
  4. };
  5. struct test2
  6. {
  7.   int i; // i est public
  8. };


---------------
-( BlackGoddess )-
n°697831
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 20:10:04  profilanswer
 

on peut placer un protected: dans une struct ?
 
Je n'ai jamais essayé... lol
 
Merci BlackGoddess,
  Xter.


---------------
Cordialement, Xterm-in'Hate...
n°697837
skelter
Posté le 12-04-2004 à 20:25:17  profilanswer
 

oui struct = class mais vu que struct est un mot partager avec le language c, pour des raison de retro compatibiliter les membre sont par defaut public
 
edit: pas partager mais gardé pour ces raisons de compatibilite


Message édité par skelter le 12-04-2004 à 20:27:50
n°697877
laurentino
Posté le 12-04-2004 à 22:23:27  profilanswer
 

WAHOUUUUUUUU ca marche aussi pour les fichiers !!!
Nikel je suis vraiment aux anges.
Re-merci.

n°697879
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-04-2004 à 22:33:11  profilanswer
 

Ce sera tout pour ce soir ? ;) La prochaine fois, balance direct l'énoncé de ton exercice....
 
Cordialement,
   xter.


---------------
Cordialement, Xterm-in'Hate...
n°697882
laurentino
Posté le 12-04-2004 à 22:36:45  profilanswer
 

c est pas un exercice, c est le preliminaires pour mon stage qui commence demain ...

n°697883
laurentino
Posté le 12-04-2004 à 22:37:06  profilanswer
 

Merci pour tout ! ;-)

n°701396
laurentino
Posté le 16-04-2004 à 19:14:30  profilanswer
 

Et comment on fait maintenant pour lire dans le fichier texte ainsi créé ? ( se placer en debut, et lire toute une ligne )

n°701397
Taz
bisounours-codeur
Posté le 16-04-2004 à 19:16:30  profilanswer
 
n°701398
xterminhat​e
Si vis pacem, para bellum.
Posté le 16-04-2004 à 19:21:34  profilanswer
 

Maintenant qu'il a assimilé les bases, .... ca lui fera de la lecture :p


---------------
Cordialement, Xterm-in'Hate...
n°701402
Taz
bisounours-codeur
Posté le 16-04-2004 à 19:29:00  profilanswer
 

pas qu'à lui

n°701404
laurentino
Posté le 16-04-2004 à 19:46:21  profilanswer
 

C est pas comment deserialiser que je cherche mais comment lire une ligne dans un fichier !
 
Et l'anglais, moyen ... :-(

n°701406
xterminhat​e
Si vis pacem, para bellum.
Posté le 16-04-2004 à 19:52:03  profilanswer
 

Code :
  1. std::ifstream fichier("fichier.txt" );
  2. if( fichier.is_open() )
  3. {
  4. std::string str;
  5. fichier >> str;
  6. }


 
--edit : sinon taz pourrait m'en vouloir  :jap:


Message édité par xterminhate le 16-04-2004 à 20:06:12

---------------
Cordialement, Xterm-in'Hate...
n°701408
xterminhat​e
Si vis pacem, para bellum.
Posté le 16-04-2004 à 19:54:03  profilanswer
 

ou
 

Code :
  1. std::ifstream fichier("fichier.txt" ); 
  2. if( fichier.is_open() ) 
  3. std::string str;
  4. getline(fichier, str);
  5. }


--edit : idem


Message édité par xterminhate le 16-04-2004 à 20:06:30

---------------
Cordialement, Xterm-in'Hate...
n°701414
Taz
bisounours-codeur
Posté le 16-04-2004 à 20:02:44  profilanswer
 

getline lit une ligne, >> un mot
 
 
("" ) me parait inutile

n°701416
laurentino
Posté le 16-04-2004 à 20:04:04  profilanswer
 

Merci Xter ...
 
Je savais que je pouvais compter sur toi !!!
 
Si je me trompe pas fichier >> str prendra que jusqu au premier espace non ?
 
MERCI

n°701417
xterminhat​e
Si vis pacem, para bellum.
Posté le 16-04-2004 à 20:05:17  profilanswer
 

oui d'ou le second exemple qui prend la première ligne.


---------------
Cordialement, Xterm-in'Hate...
n°701433
laurentino
Posté le 16-04-2004 à 20:31:51  profilanswer
 

Ouais mais quand on ouvre le fichier on est en fin de fichier non ?
Faut se placer en debut ... mais on fait comment ?
Je l'avais deja demandé plus haut.
 
(désolé si vous me trouvez lourd )

n°701434
Taz
bisounours-codeur
Posté le 16-04-2004 à 20:35:03  profilanswer
 

t'es lourd. tu peux pas lire la documentation comme tout le monde ?

n°701444
skelter
Posté le 16-04-2004 à 20:53:48  profilanswer
 

+1
 
la c'est abusé ce que tu demande laurentino

n°701445
laurentino
Posté le 16-04-2004 à 20:54:02  profilanswer
 

c est plus court de repondre il me semble mais c est pas grave.
La doc en anglais j y pipe rien moi alors ....
Et puis t es pas obligé de repondre si ca te saoule.
 
MERCI

n°701447
skelter
Posté le 16-04-2004 à 20:56:51  profilanswer
 

ta meme pas chercher en francais, pourtant c'est pas ca qui manque, et si tu lit pas l'anglais t foutu
 
http://casteyde.christian.free.fr/ [...] x7588.html

n°701449
Taz
bisounours-codeur
Posté le 16-04-2004 à 21:00:23  profilanswer
 

laurentino a écrit :

c est plus court de repondre il me semble mais c est pas grave.
La doc en anglais j y pipe rien moi alors ....
Et puis t es pas obligé de repondre si ca te saoule.
 
MERCI

t'es surtout une grosse feignasse qui flood le forum de questions sur le fichier alors que tout est écrit sur les liens de que tout le monde te redonne sans cesse

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  C++ objets et fichiers

 

Sujets relatifs
Créer des objets java dynamiquement...Liste des fichiers d'un repertoire
Quel librairie pour loader les objets WaveFront (.obj)?[vba excel] ouverture de fichiers dans un classeur
les fichiers exécutablesmail avec fichiers attachés
HTML/FLASH - Fichiers swf premier plan - ie[C] problemes de lecture dans un fichier des noms de fichiers à ouvrir
écriture de fichiers textesUploader plusieurs fichiers par un même formulaire ?
Plus de sujets relatifs à : C++ objets et fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR