我正在编写一个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是否仍然有效。
答案 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;
};