使用istream_iterator,copy后cin不能在输入问题的解决

 

今天使用istream_iterator和copy将输入保存在vector的数组中,但是输入完之后就不能在使用cin进行输入了,如:cin>>input;这句总是不能被执行,原因是copy的结束是eof,也就是标准输入的结尾标记是istream_iterator<unsigned short>(),这个是被标记成一输入错误,后面的标准输入就不能进行下去了……

 

istream_iterator<unsigned short> is(cin);  
istream_iterator<unsigned short> eof; 
vector<unsigned short> harr; 
copy(is, eof, back_inserter(harr));

 

 应该在再次使用标准输入之前调用cin的clear和sync,clear()函数是清理标准输入错误的,sync()是清理缓存区的。

 

istream_iterator<unsigned short> is(cin);  
istream_iterator<unsigned short> eof; 
vector<unsigned short> harr; 
copy(is, eof, back_inserter(harr));

cin.clear();
cin.sync();

 

在调用copy之前应该调用sync()确保标准输入区缓存区为空的,如果没有调用cin.sync(),input的内容也会输入到harr数组中去

cin>>input;
cin.sync();


istream_iterator<unsigned short> is(cin);  
istream_iterator<unsigned short> eof; 
vector<unsigned short> harr; 

copy(is, eof, back_inserter(harr));
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值