How do you clear a stringstream variable?

c++, stringstream

Solution

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.

Problem

I've tried several things already, ``` std::stringstream m; m.empty(); m.clear(); ``` both of which don't work.

Original source

Related problems