简介
istream_iterator和ostream_iterator是两个迭代器主要用来输入输出。istream_iterator允许使用懒惰求值,标准库不保证迭代器立即从流读取数据,具体实现中可以推迟从流中读取数据,直到我们使用迭代器时才真正读取,例如需要解引用时。ostream_iterator是write only的,所以不能有类似ostream_iter != pointer的操作。另外分隔符必须是字符串。必须将ostream_iterator绑定到一个指定的流,不允许空的或表示尾后位置的ostream_iterator。
ostream_iterator
下面是ostream_iterator的类模板源码:
|
|
从源代码中可以看到,outstream是一个basic_outstream指针,对于ostream_iterator(假设out为其对象),*out、out++、++out操作相同,都是返回的out。
下面是一个实际调用的例子:
|
|
这里++result是没有作用的,因为每次赋值时就会提交写操作,不需要移动迭代器。
istream_iterator
对于istream_iterator的分析在下面源代码的注释中进行了部分解析。
|
|
声明
若有错误,欢迎讨论。严禁抄袭,仅用于学习。