输入输出迭代子的用法

来源:互联网 发布:淘宝客一单能赚多少 编辑:程序博客网 时间:2024/06/05 00:18

输入输出迭代子

可以将标准输入对象cin组装成输入流迭代子(istream_iterator),也可以将标准输出对象组装成输出流迭代子(ostream_iterator),

以此来完成输入输出的操作。

输入流迭代器:

定义方法:istream_iterator<要从流中读取的数据类型> 迭代器名(绑定的流); //可以先不绑定流

例如:std::istream_iterator<int> inputInt(cin);

输出流迭代器:

定义方法:ostream_iterator<要从流中读取的数据类型>  迭代器名(绑定的流,元素分隔符);  //输出流迭代器必须绑定流!

例如:std::ostream_iterator<int> outputInt(cout , "\n"); // 绑定流对象cout,元素之间分隔符为换行 ,有点类似于java中的printfln(),

实现了自动换行。

也可以这样定义:std::ostream_iterator<int> outputInt(cout);  元素分隔符不是必须的,但是这样就不能自动换行了

下面是一个使用的例子:

#include <iostream>using namespace std;#include <iterator>int main(){cout<<"Enter two integers: ";//创建一个输入流迭代器std::istream_iterator<int> inputInt(cin);int num1 = *inputInt;//从输入流中读取一个整数++inputInt;//移动迭代器指向下一个整数int num2 = *inputInt;//从输入流中读取下一个整数cout<<"The sum si: ";//创建一个输出流迭代器std::ostream_iterator<int> outputInt(cout,"\n");*outputInt = num1 + num2;return 0;}


使用时要注意的几点:

1.要使用istream_iterator对象和ostream_iterator对象,必须包含头文件iterator;

2.组装后的输入输出流迭代器只能读取指定数据类型的数据,否则就会抛出异常;

3.可以通过*操作符读取标准输入流中的内容,因为istream_iterator模板对*操作符进行了重载;

4.通过++运算符可以将迭代器移动到下一个输入数据处。