我正在尝试从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!
实际输出为:
我假设我正在创建和使用临时对象的方式有问题。
如果不能轻易修复,是否有其他方法可以获得相同的语义?我正在寻找的是能够轻松创建一个对象,转移到它,然后在析构函数中使用完整的消息做一些事情。 (用例是自定义日志记录代码。析构函数将加时间戳,检查严重性等。)