Osrstream

Résolu
timy94
Messages postés
50
Date d'inscription
jeudi 17 novembre 2005
Statut
Membre
Dernière intervention
7 janvier 2009
- 26 sept. 2007 à 17:27
timy94
Messages postés
50
Date d'inscription
jeudi 17 novembre 2005
Statut
Membre
Dernière intervention
7 janvier 2009
- 28 sept. 2007 à 11:38
Bonjour,


Après avoir sérialiser une classe en surchargeant l'operateur <<


j'ai ecris,


ostrstream  chaine;

char * MaTrame_txt;


CObjet  * MATrame = new CObjet();


chaine <<*Matrame;

MaTrame_txt= chaine.str();


cout <<MaTrame_txt << endl;    affiche ce que j'attends


Mais si je detruis mon objet MaTrame et que je recommence ça ne marche plus

car le buffer chaine est gelé. voir Flux en memoire(chaine) avec ostrstream.str() du style.


delete MATrame_txt;

        ~MaTrame;


CObjet  * MATrame = new CObjet();   nouvel objet créé

chaine <<*Matrame;                          ICI CA PLANTE


Comment faire pour dégeler le buffer chaine.


MERCI

Timy94</gras>

4 réponses

timy94
Messages postés
50
Date d'inscription
jeudi 17 novembre 2005
Statut
Membre
Dernière intervention
7 janvier 2009

28 sept. 2007 à 11:38
Bonjour,

AJ'ai trouvé tout seul
I
l faut écrire

ostrstream  * chaine;
char * MaTrame_txt;

CObjet  * MATrame = new CObjet();

*chaine <<*Matrame;
MaTrame_txt= *(chaine).str();

Il faut passer par un pointeur qu'on réinitialise au besoin.

MERCI

Timy94</gras>
3
cs_juju12
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
26 sept. 2007 à 18:22
Peut-être chaine.freeze(false) car .freeze(true) est appelé par .str()
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
26 sept. 2007 à 18:30
ah que c'est beau tout ce natif...

ciao...
BruNews, MVP VC++
0
cs_juju12
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
26 sept. 2007 à 18:35
C'est clair.
0