c++输入流的问题,请教下
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<int> ivec;
vector<int> ilist;
int val;
cout<<"请输入vector元素"<<endl;
while(cin >> val)
{
ivec.push_back(val);
}
cout<<"请输入list元素"<<endl;
while(cin >> val)
{
ilist.push_back(val);
}
vector<int>::iterator iter1 = ivec.begin();
vector<int>::iterator iter2 = ilist.begin();
while((iter1 != ivec.end()) && (iter2 != ilist.end()))
{
if(*iter1 != *iter2)
break;
++iter1;
++iter2;
}
if((iter1 == ivec.end()) && (iter2 == ilist.end()))
{
cout<<"vector and list have the same emle"<<endl;
}
else
{
cout<<"vector and list different"<<endl;
}
return 0;
}
我想在第一个循环输错的情况下跳出来,继续执行第二个循环,但是不知道该对输入流做什么处理
试了几种自己想得方法,不对啊,求指点
[解决办法]
while(cin >> val
[解决办法]
cin.fail())
{
if(cin.fail())
{
cin.clear(); //清除std::cin的错误状态
cin.sync(); //清空输入缓冲区
break;
}
ivec.push_back(val);
}
[解决办法]
恩,我也发现在linux下无效,但是我也不是太清楚为什么不行,等我知道了再告诉楼主,如果楼主知道了,几个告诉我哦。