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