流迭代器的用法?

时间:2011-05-20 14:53:24

标签: c++

我一直在关注ostream和istream迭代器,并想知道它们在现实世界中的使用量。我看了几本书和很多网页,而且一切都是同一个例子的变体,比如

  ostream_iterator<int> out_it (cout,", ");
  copy(myvector.begin(), myvector.end(), out_it);

这些流迭代器可以与真实文件和二进制数据一起使用吗?通常是这样做的吗?

3 个答案:

答案 0 :(得分:1)

这取决于。除了快速,我发现它们并没有那么有用 测试:输入流迭代器不能轻易读取部分内容 一个文件,输出迭代器附加一个终结符,而不是 插入分隔符。但很大程度上取决于;如果你在工作 一个只有很多文件的环境 数字清单,它们可能是合适的;并且有案例 终结者是合适的。

答案 1 :(得分:1)

这取决于。如果你按照Unix风格的过滤器的顺序写一些东西,它们可以很好地工作。否则,它们几乎没用。

使它们更有用(至少是IME)的一个补充是infix_iterator,它只在元素之间而不是在每个元素之后插入指定的分隔符。从技术上讲,你不再使用ostream_iterator,但它足够接近,其余大部分代码都不需要关心差异。

答案 2 :(得分:0)

fstream系列继承自istream / ostream,因此可以完成。

ofstream outFile("myfile");

//..............

ostream_iterator<data> dataIterOut(outFile);

它有多普遍的问题更有趣。根据我的经验,不是很好。令人信服的动机是利用标准算法(或您自己制作的一些算法)。但是,由于你想要读/写的结构/类需要已经拥有所有必要的基础设施(ctors,流操作符等),我想大多数人都没有看到这一点。 E.G。

 data d(...);

*dataIterOut = d;  //meh.  little work saved, short on clarity