2

可能重复:
为什么写入临时流失败?

我正在尝试从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!

实际输出为:

!0x8049d14,世界!

我假设我创建和使用临时对象的方式有问题。

如果它不能轻易修复,是否有另一种方法来获得相同的语义?我正在寻找的是能够轻松地创建一个对象,转移到它,然后在析构函数中使用完整的消息做一些事情。(用例是自定义日志代码。析构函数将时间戳、检查严重性等。)

4

0 回答 0