winning post 8 2017:vector赋值,while运行次序问题

来源:百度文库 编辑:高考问答 时间:2024/05/22 07:52:48
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int word1;
int word2;
vector<int>iec1(5);
vector<int>iec2(10);
cout<<"输入iec1:\n";
while(cin>>word1){
iec1.push_back(word1);
}
cout<<"输入iec2:\n";
while(cin>>word2){
iec2.push_back(word2);
}

return 0;
}
程序执行到cout<<"输入iec2:\n";时中止,为什么不执行while(cin>>word2),高手指点一下
最后cout<<"输入iec2:"
press any key to continue
没有让我输入iec2不知为什么

当遇到无效字符或遇到文件结束符时,输入流cin就处于出错状态,即无法正常提取数据,所以程序退出了。

试一下下面的程序吧:
#include<iostream>
#include<vector>
#include <limits>
using namespace std;

int main()
{
int word;
vector<int>iec1(5);
vector<int>iec2(10);
cout<<"ÊäÈëiec1:\n";
for(int i=0;i<5;)
{
if(cin>>word)
{
iec1.push_back(word);
i++;
}
else
{
cin.clear();
cin.ignore( numeric_limits<int>::max(), '\n' );
cout<<"Please input number"<<endl;
}
}
cout<<"ÊäÈëiec2:\n";
for(i=0;i<10;)
{
if(cin>>word)
{
iec2.push_back(word);
i++;
}
else
{
cin.clear();
cin.ignore( numeric_limits<int>::max(), '\n' );
cout<<"Please input number"<<endl;
}
}

return 0;
}