我有一个结构类型,让我们说它看起来像这样:
struct Token {
int type;
char value[64];
};
我想把Token
的对象放到一个流中,像get()
,peek()
这样的函数都返回一个对象(或一个引用/指针)?
像这样的东西:Token token = stream.get();
或Token* token = stream.get();
这是一个创建自定义流对象的方法的配方,可以通过继承std::stringbuf
来完成
class MyStreamBuf : public std::stringbuf {
//... override some functions from stringbuf (eg. sync) to change behavior
};
class MyInputStream : public std::istream {
MyStreamBuf buf_;
public:
MyInputStream : std::istream(&buf_){
}
//... add more interface here, etc.
}
继续,你应该能够完成你所要求的。