关于 while(cin>>input) 使用两次以上时,出现只有第一个有效的问题

今年春节闹什么肺炎病毒,宅在家闲着无事敲起了代码,发现一个文件中连用两次 while(cin>>input) 时发现只有第一个有效?
代码如下:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> arr1;
	vector<int> arr2;
	int input;
	while(cin>>input){
		arr1.push_back(input);
	}
	while(cin>>input){
		arr2.push_back(input);
	}
	for(auto &i:arr1) cout<<i<<" ";
	for(auto &i:arr2) cout<<i<<" ";
	return 0;
} 

于是找到问题所在为 cin输入流中的错误信息没有清除
故我们在使用第二个while(cin>>input)时应加上cin.clear();
修改后,经调试有效,代码如下:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> arr1;
	vector<int> arr2;
	int input;
	while(cin>>input){
		arr1.push_back(input);
	}
	//将错误标识fail刷新为默认值0
	cin.clear();
	while(cin>>input){
		arr2.push_back(input);
	}
	for(auto &i:arr1) cout<<i<<" ";
	for(auto &i:arr2) cout<<i<<" ";
	return 0;
} 
posted @ 2020-01-27 22:47  Coder-Jiang  阅读(9)  评论(0)    收藏  举报  来源