| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 674 人关注过本帖
标题:大家遇到过这个情况吗?
只看楼主 加入收藏
camelbupt
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-28
收藏
 问题点数:0 回复次数:4 
大家遇到过这个情况吗?

#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不能读入;
这是为什么啊?

搜索更多相关主题的帖子: int vector back cin include 
2007-10-02 23:33
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
收藏
得分:0 

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


~我的人生不是套公式~
2007-10-03 01:02
编程高手
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-10-2
收藏
得分:0 
while(cin>>value2)
的前面加cin.clear();
2007-10-03 01:55
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
收藏
得分:0 
加上cin.clesr();的话,用ctrl+z来结束一次输入。

~我的人生不是套公式~
2007-10-03 09:04
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

看看标准IO库

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

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


Fight  to win  or  die...
2007-10-04 13:10
快速回复:大家遇到过这个情况吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017409 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved