注册 登录
编程论坛 C++教室

大家遇到过这个情况吗?

camelbupt 发布于 2007-10-02 23:33, 678 次点击

#include <iostream>#include <vector>
using namespace std;
int main()
{
vector<int> vec1;
vector<int> vec2;
int value1,value2;
while(cin>>value1)
vec1.push_back(value1);
cout<<"next"<<endl;
while(cin>>value2)
vec2.push_back(value2);
return 0;
}
这个现在程序编译正常,在运行时,只可以让vec1读入数据,但是vec2不能读入;
这是为什么啊?

4 回复
#2
wangweicoin2007-10-03 01:02

因为value1是int型的变量,如果不在while()内加入例如&&value!=0;这样如果value1等于0则跳出循环的条件语句,则输入非int型的任何常量作为结束符,都会导致程序后面任何关于输入的操作无法进行,以前遇到过,我也不是很清楚其中的道理,是不是和输入流的相关知识有关?

#3
编程高手2007-10-03 01:55
while(cin>>value2)
的前面加cin.clear();
#4
wangweicoin2007-10-03 09:04
加上cin.clesr();的话,用ctrl+z来结束一次输入。
#5
aipb20072007-10-04 13:10

看看标准IO库

你把输入当作条件,当跳出循环时,流被置上了错误标记istream::badbit

在两次循环中间加
cin.clear(); //清除错误标记
cin.ignore(); //清空输入缓冲区残留

1