I have a streamstring in two loops and it is burning my RAM. So how to clear properly the buffer of a steamstring? It is like that to simplify :
stringstream ss (stringstream::in | stringstream::out);
for()
{
for()
{
val = 2;
ss << 2;
mystring = ss.str();
// my stuff
}
// Clear the buffer here
}
It wrote 2 then 22 then 222... I tried .clear() or .flush() but it is not that. So how I do this?
Set
ss.str("");
when you want to clear out the excess characters (Edit: thank you).Use
.clear()
if your stream has set any error flags in the process of the prior conversion.If you use C++0x:
Visual Studio 2010 (SP1) supports it.
If you don't use C++0x:
It won't clear the memory, but you could use your
stringstream
object as it would be empty before.The obvious solution is to use a new
stringstream
each time, e.g.:This is the way
stringstream
was designed to be used. (Also: do you really want astringstream
, or just anostringstream
?)