I've tried several things already,
std::stringstream m; m.empty(); m.clear();
both of which don't work.
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".
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
is correct, although using:
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.
You can clear the error state and empty the stringstream all in one line
std::stringstream().swap(m); // swap m with a default constructed stringstream
This effectively resets m to a default constructed state