How do you clear a stringstream variable?

CodingWithoutComments picture CodingWithoutComments · Aug 21, 2008 · Viewed 402.2k times · Source

I've tried several things already,

std::stringstream m;
m.empty();
m.clear();

both of which don't work.

Answer

Wilka picture Wilka · Aug 21, 2008

For all the standard library types the member function empty() is a query, not a command, i.e. it means "are you empty?" not "please throw away your contents".

The clear() member function is inherited from ios and is used to clear the error state of the stream, e.g. if a file stream has the error state set to eofbit (end-of-file), then calling clear() will set the error state back to goodbit (no error).

For clearing the contents of a stringstream, using:

m.str("");

is correct, although using:

m.str(std::string());

is technically more efficient, because you avoid invoking the std::string constructor that takes const char*. But any compiler these days should be able to generate the same code in both cases - so I would just go with whatever is more readable.