int n;
cin>>n;
如:
输入:256(没问题)
输入:sshdj(出现了问题)
输入:126.356(也出现了问题)
如上:我要输入的是一个整型数据,但是我一不小心输入的是字母或是其他,就会导致错误。
请问我应该如何写程序才能判断使得一旦输入的不是整型数据就会自动提示输入有误。
[CODE]#include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
while(cin.fail())
{
cout<<"input a value,please : ";
cin.clear();
cin.sync();
cin>>a;
}
cout<<a<<endl;
system("pause");
return 0;
}[/CODE]
[CODE]#include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
while(cin.fail())
{
cout<<"input a value,please : ";
cin.clear();
cin.sync();
cin>>a;
}
cout<<a<<endl;
system("pause");
return 0;
}[/CODE]
运行结果:
assdq
input a value,please : asd
input a value,please : assad
input a value,please : asasa
input a value,please : sasasas
input a value,please : asasas
input a value,please : 123.354
123
请按任意键继续 . . .
Press any key to continue
但是我输入:123.345之后a 的值是123而不提示错误,为什么?
123对于整型的输入是有效的,会被读取转换为整型, 遇到'.'后读取结束,当下一次cin时 '.' 才会被读.
如果想要严格的输入判断,可以看看
http://www.bc-cn.net/bbs/dispbbs.asp?boardID=56&ID=53814&replyID=81604&star=1&skin=0#81604