`

使用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));
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics