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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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
Rejoignez-nous