#include <iostream.h>
main()
{
int a;
for(;;)
{
cin>>a;
if(条件)
{cout<<“输入正确”<<endl;
break;}
else cout<<"输入有误,请重新输入!"<<endl;
}
system("pause");
}
if里面该怎么写,当输入a所定义的整形数据时程序完成,而输入其他类型的数据时,比如输入了字符型数据,则出错,返回重输。直到正确为止
if里面该怎么写,当输入a所定义的整形数据时程序完成,而输入其他类型的数据时,比如输入了字符型数据,则出错,返回重输。直到正确为止
输入的类型和接受输入的变量类型不匹配 是不会被赋值的.
问题在于cin的状态会被设置为false,将不再接受后续的输入.
cin.clear()可以用来重置状态.
用cin.get()把缓冲区的不匹配的输入处理掉.(可能有更好的清除输入缓冲的办法,我只知道这一种).
#include <iostream>
using namespace std;
int main()
{
int a =-1;
for (;;)
{
cin>>a;
bool bRet = cin.good();
if(!bRet)
{
cout<< "error";
break;
}
else
{
cout << "corret";
break;
}
}
system("pause");
return 0;
}
刚去查了书,判断输入操作是否成功可以用 good()这个函数。如果为真,说明前一个操作成功,下一个操作可能成功。否则一定失败。
然后我把程序改成上面那样,就没问题了。
[此贴子已经被作者于2006-1-25 17:44:21编辑过]
用这个函数也可以了。
留在缓冲里的小数对后面的操作有什么影响呢
按照要求输入小娄的话也要判断为错该怎么弄呢
#include <iostream.h>
main()
{
int a;
while(!(cin>>a)){
cin.clear();
cin.ignore();
cout<<"error"<<endl;
}
cout<<"true"<<endl;
system("pause");
}