读书人

cin有关问题

发布时间: 2013-07-09 09:50:48 作者: rapoo

cin问题
各位C++高手,我再VS2010中创建了一个C++项目,里面有一个功能是输入0-100之间的整数,可我发现用cin输入时,变量值并没有变,而且进入while后一直执行cout语句,不执行cin,请各位帮忙看看什么问题不胜感激,以下是我的代码。
#include<iostream>
#include<cstdlib>//包含产生随机数的头文件
using namespace std;
int main()
{
//定义基本信息
int id=0;
int looks=0;
int chara=0;
int wealh=0;
int wishlooks=0;
int wishchara=0;
int wishwealth=0;
cout<<"请输入您的基本信息,包括ID,样貌,品格,财富,取值为1-100"<<endl;
cin>>id;
while(!(id>=1&&id<=100))
{
cout<<"ID应在1-100之间,请重新输入"<<endl;//到这里一直执行这句
cin>>id;//不执行这句

}

cout<<"请输入对各项的偏好,包括期望样貌,期望品格,期望财富,总和为100"<<endl;
//int c=rand()%(b-a)+a;
return 0;
} C++
[解决办法]
输入缓存区没有清空吧
[解决办法]
不知道楼主输入的是什么,如果是你想输入 int类型 结果输入了char 则会出现cin输入错误
cin被标记错误 不可用( 意思是 出现不匹配 )然后就得用clear()清除错误状态 就是清除错误状态
否则cin>>id会一直是同一个char字符,但刚才输入的字符并没有从流中清除
[解决办法]
如果输入的不是数字,
输入的字符没有取走, 肯定会一直循环的.

试试这样修改吧:


while(!(id>=1&&id<=100))
{
cout<<"ID应在1-100之间,请重新输入"<<endl;//到这里一直执行这句

if(!cin)
{
cin.clear();

int l = 1;
char x;
while(l == 1)
{
l = cin.readsome(&x, 1);
}
}
cin>>id;//不执行这句
}

读书人网 >C++

热点推荐