Желая реализовать класс std :: exception и особенно функцию what, я столкнулся с проблемой с std :: stringstream.
Чтобы сделать его коротким, он печатает пустую строку, когда я использую эту реализацию:
const char *what() const throw () {
std::stringstream ss;
ss << "Error";
if (_line > -1)
ss << " at line " << std::to_string(_line);
ss << ": " << _msg;
return ss.str().c_str();
}
и что-то печатать (например: «Ошибка в строке 3»), когда я использую эту реализацию:
const char *what() const throw () {
std::stringstream ss;
ss << "Error";
if (_line > -1)
ss << " at line " << std::to_string(_line);
//ss << ": " << _msg; // COMMENT THIS LINE
return ss.str().c_str();
}
Затем я даже пытаюсь увидеть, происходит ли это из: "или из переменной _msg (std :: string), но, похоже, ни одно из них не имеет влияния.
Это проблема буфера со стороны потока строк или проблема манипуляции с моей стороны? Если это проблема манипуляции, пожалуйста, объясните мне, как ее использовать.