Ecriture et lecture de class dans un fichier
Bonjour à tous,
Alors je vous explique mon problème:
J'ai une classe "Evnt_Horodate" declarée comme ceci:
Code:
1 2 3 4 5 6 7
| class Evnt_Horodate
{
public:
int flag_suppression;
int flag_initialise;
Element element; //Classe Element
}; |
Elle contient un objet element de la classe Element declarée comme ceci:
Code:
1 2 3 4 5 6
| class Element
{
public:
int data;
int date;
}; |
Je voudrais stocker cette classe dans un fichier binaire et pouvoir la relire par le suite.
Ma fonction d'écriture:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| void ajouter(Element *element)
{
//Ouverture du fichier
ofstream fichier_ecriture("Stockage.txt",ofstream::binary);
//Creation de l'objet evnt_horodate a ecrire
Evnt_Horodate *evnt_horodate;
evnt_horodate = new Evnt_Horodate();
event_horodate->element.date = 15;
//Parametrage de l'objet evnt_horodate
evnt_horodate->flag_initialise = 1;
evnt_horodate->flag_suppression = 0;
if(fichier_ecriture)
{
//Position de l'octet
int adresse_octet = 0;
//Positionnement du curseur dans le fichier
fichier_ecriture.seekp(adresse_octet,ios::beg);
cout<<"Ajout d'un élement"<<endl;
//Ecriture de la classe
fichier_ecriture.write((char*) evnt_horodate, sizeof(Evnt_Horodate));
//Fermeture du fichier
fichier_ecriture.close();
}
else
{
TRACE("erreur d'ecriture dans le fichier !");
}
//Destruction des objets
delete evnt_horodate;
delete element;
} |
Et ma fonction de lecture:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| void lire()
{
int date_lue;
//Creation d'un objet de type Evnt_Horodate pour la lecture
Evnt_Horodate *evnt_horo_lecture;
evnt_horo_lecture = new Evnt_Horodate();
//Ouverture en lecture du fichier Stockage.txt
ifstream fichier_lecture;
fichier_lecture.open("Stockage.txt",ios::binary);
if(fichier_lecture)
{
//Positionnement du curseur dans le fichier
fichier_lecture.seekg(0,ios::beg);
//Lecture de l'evenement
fichier_lecture.read((char*) evnt_horo_lecture, sizeof(Evnt_Horodate));
//Lecture de la date de cet evenements
date_lue = evnt_horo_lecture->element.date;
cout<<"date lue :"<<date_lue<<endl;
//Fermeture du fichier
fichier_lecture.close();
}
else
{
cout<<"Erreur de lecture dans le fichier !"<<endl;
}
//Destruction de l'objet evnt_horo_recherche
delete evnt_horo_lecture;
} |
Le fichier est bien créé et mon programme y écrit bien.
Mais "date_lue" qui devrait me renvoyer la valeur date de l'objet "element" contenu dans l'objet evnt_horo_lecture, reste toujours à 0... :(
Vous voyez un problème dans mon code ?
Je vous remercis par avance !