views:

5269

answers:

4

I've tried several things already,

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

both of which don't work.

+6  A: 
m.str("");

seems to work.

CodingWithoutComments
+30  A: 

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.

Wilka
A: 

I'm always using
m.str() = "";

bernhardrusch
A: 

Thanks it is work properly!!!