Toon posts:

[C++] Hoe wis ik een strstream ?*

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit wil ik:
Text formatteren (debuginfo) en daarna kiezen of ik het naar stdout gooi of naar een xwindow (dmv overriding).
Gaat goed, maar na 1x wil ik de stream weer leeg maken zodat ik weer aan een nieuwe stream kan beginnen (bijv. nog meer debuginfo).
Hoe te handelen in een dergelijke situatie?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
void IniParser::sh(strstream &out) {
  out << ends;
  char *ch= out.str();
  cout << ch;
  delete ch;
  // out.clear(); //ofzo?
}

//voorbeeld aanroep:
  if (fp==NULL) {
    out << "Could not open file: " << filename.c_str() << endl; 
    sh(out);
  }


De docs zeggen dat na die cout << ends de boel een freeze(); krijgt. Oftewel de stream ligt dan vast. Moet ik misschien de beginpointer deleten ? Is er een STL aanroep die ik kan gebruiken ? Ik ben dwalende. ;(
Oh codeguru's van Nederland ik wend mij tot u voor inzichten.. _/-\o_

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

staat toch echt in de documentatie hoor...

ends roept freeze () niet aan, maar stopt er simpelweg een \0 character in
de str () methode roept freeze () wel aan, maar met freeze (false) kun je m unfreezen

een array deleten doe je trouwens met delete[], en niet met delete. Overigens als je m geunfreezed hebt hoef je m niet te deleten


maar misschien is het handiger om stringstream te gebruiken

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar is ie dan al leeg na het unfreezen ? Zonee hoe maak ik dat ding op een correcte manier leeg?
Nogmaals _/-\o_

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Waarom wil je uberhaupt een "stream leeg maken"? Meteen nadat je end of input leest in een stream zet die z'n state naar not-good. En (bijna) alle stream operaties worden dan "do-nothings". Wat is leegmaken van een stream? Je kan een nieuwe streambuffer constructen en die er aan hangen. Maar waarom je niet gewoon een nieuwe stream maakt...ik snap het niet :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Anders moet ik voor elke debug frutsel een nieuwe sstream gaan zitten maken alhoewel dat ook een beetje middels een define kan natuurlijk.

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

En wat is er dan mis met std::cerr bv? En die link je aan het begin van je programma door naar cout bv, of een filestreambuffer ozoiets?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Aha, en deze link gaf me een goed voorbeeld over debug met std:cerr:
http://libcwd.sourceforge...anual/page_why_macro.html
Pagina: 1