std :: istream子类:删除析构函数中的streambuf

时间:2014-10-15 07:05:28

标签: c++ c++11 stream subclassing

我正在编写一个std :: istream子类,它使用自己的std :: stringbuf子类

class decostream : public std::istream
{
public:
    decostream(std::istream * input)
        : std::istream(new decostreambuf(input))
        {
        }

    ~decostream() { delete rdbuf(); }
}

这有效吗?从std :: istream文档中,很难知道当istream被销毁时streambuf是否仍然有效。

1 个答案:

答案 0 :(得分:0)

#include <istream>
#include <sstream>

class decostreambuf : public std::stringbuf {
public:
    decostreambuf(std::istream* input) {
        //...
    }
};

class decostream : public std::istream {
public:
    decostream(std::istream* input) : sb(input), std::istream(&sb) {
        //...
    }
private:
    decostreambuf sb;
};