我想写一个简单的istream
对象,它只会转换另一个istream
。
我想只实现readline
(它会读取原始流中的一行,处理它,然后返回已处理的行),并且有一些通用代码,read
会使用我的读取行,对其进行缓存,并将所需的字节数作为输出。
是否有任何课程可以让我这样做?
例如
struct mystream : istreamByReadLine {
istream& s;
mystream(istream& _s):s(_s){}
virtual string getline() {
string line;
getline(s,line);
f(line);
return line;
}
}
class istreamByReadLine : istream {
... // implementing everything needed to be istream compatible, using my
... // getline() virtual method
}
答案 0 :(得分:4)
答案 1 :(得分:1)
你确定这是要走的路吗?在类似的情况下,我
要么定义一个类(例如Line
),要么使用>>
运算符
做了我想要的,并阅读,例如:
Line line
while ( source >> line ) ...
课程本身非常简单,只需std::string
成员,以及operator std::string() const
函数
归还它。所有的过滤工作都将在
std::istream& operator>>( std::istream&, Line& dest )
功能。或者我在前面安装了过滤streambuf
正常streambuf
; Boost iostream有很好的支持
此