关于 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;
}
本文来自博客园,作者:Coder-Jiang,转载请注明原文链接:https://www.cnblogs.com/coderjiang/p/18118110

浙公网安备 33010602011771号