实现简单的输入流

时间:2011-04-13 10:13:09

标签: c++ iostream

我想写一个简单的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
}

2 个答案:

答案 0 :(得分:4)

您是否看过boostiostreams?它可以为您完成大部分繁重的工作(可能不是针对您的确切用例,而是针对C ++标准库流)。

答案 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有很好的支持 此

相关问题