istream java_使用istream迭代器来输入输出数据

在C++中,很多人都会选择使用cin来进行数据的输入,使用cout来进行数据的输出,现在在C++11中我们可以使用iostream迭代器来进行这些操作,这会减少代码量,达到的效果和前面两种相同。以下是我学习中的总结,不够完善之处望指导:

使用istream_iterator来输入数据。

在我们创建一个流迭代器的时候,必须制定迭代器将要读写的对象类型。

//以下一般为数据接收的范围

istream_iterator int_it(cin);//从cin读取int类型的数据

istream_iterator int_oef;//尾后迭代器

下面是一个使用istream_iterator来向一个vector中写入string类型数据的例子:

#include "stdafx.h"

#include

#include

#include

#include

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

vector vec;

istream_iterator item_in(cin), eof;//创建istream_iterator迭代器

while (item_in != eof)//向vec中读入string数据

{

vec.push_back(*item_in++);

}

cout << "vec中的数据为:" << endl;

for (auto v : vec)

{

cout << v << " ";

}

cout << endl;

system("pause");

return 0;

}

输入:a b v s

执行结果为:a b v s

使用ostream_iterator来打印数据

这里和上面一样我们首先需要创建一个对象,即ostrean_iterator out_iter(cout, " ");里面的第二个参数表示每输出一个数据后面跟上一个空格,第二个参数可以个人设置,这里是代表一下。下面是使用上面的例子和前面学习的sort()和copy(),从标准属兔读取一个整数序列,将其重新排列并将结果输出。

#include "stdafx.h"#include#include#include#include

using namespacestd;int _tmain(int argc, _TCHAR*argv[])

{

vectorvec;

istream_iteratoritem_in(cin), eof;while (item_in != eof)//使用流输入输入数据

{

vec.push_back(*item_in++);

}

cout<< "vec中的数据为:" <

{

cout<< v << " ";

}

cout<

sort(vec.begin(), vec.end());//定义流输出迭代器,每个数据后跟一个空格

ostream_iterator out_iter(cout, " ");//使用copy和流输出输出数据

copy(vec.cbegin(), vec.cend(), out_iter);

system("pause");return 0;

}

输入:1 2 4 3 5 7 6

执行结果为:1 2 3 4 5 6 7

从上面的两句话可以看出来,使用istream迭代器输入输出数据可以达到和cin、cout同样的效果,但是前者明显可以减少很多代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值