如果你按数字读入的话,读到无法接受的部分后,读入这个动作就会停止, 继续用int读的话就永远也读不过
可以考虑用string来读, 一次读入一行, 然后用atoi转成整数,如果你对格式要求特别严格的话也许只能自己转了。。
bool IsNumeric(char num[50])
{
bool flag;
for(;*num!='\0';num++)
{
if(*num>='0'&&*num<='9')
flag=true;
else
{
flag=false;
break;
}
}
return flag;
}
#include "iostream.h"
void main()
{
char iA[50];
for(;;)
{
cin>>iA;
if(!IsNumeric(iA))
{
cerr<<"输入错误\n";
cin.clear();
cin.ignore();
}
else
{
cout<<"输入正确"<
}
}
}
int iA = 0;
for( ; ; )
{
cin>>iA;
if(!cin)
{
cin.clear();
cin.ignore(1024,'\n');
cout<<"error!"<
或者
if(cin.fail())
{
cin.clear();
cin.sync();
}
试试
输入错误后
加个
if(!cin.good())
fflush(stdin);