可能重复:
为什么写入临时流失败?
我正在尝试从ostrginstream
一些自定义日志记录代码派生一个类。奇怪的是,写入流的第一件事总是被破坏。这是一个最小的、独立的演示程序:
#include <iostream>
#include <sstream>
using namespace std;
class Test : public ostringstream
{
public:
Test() { ; }
~Test() { cerr << "!" << str() << "!" << std::endl; }
};
int main(void)
{
Test() << "Hello" << ", " << "World";
}
预期输出为:!Hello, world!
实际输出为:
我假设我创建和使用临时对象的方式有问题。
如果它不能轻易修复,是否有另一种方法来获得相同的语义?我正在寻找的是能够轻松地创建一个对象,转移到它,然后在析构函数中使用完整的消息做一些事情。(用例是自定义日志代码。析构函数将时间戳、检查严重性等。)