This is not a problem of stringstream
. It is the problem of c_str
function - it returns pointer to a char*
representation of std::string
, but it lives only during lifetime of an original string. When you call char *str = ss.str().c_str()
the following actually happens:
string tmp = ss.str();
char *str = tmp.c_str();
tmp.~string (); // after that line the pointer `str` is no longer valid
c_str
is a dangerous function provided only for compatibility and speed purposes and you should avoid using it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…