作者littleshan (我要加入剑道社!)
看板C_and_CPP
标题Re: [问题] 计算机程式防呆
时间Mon May 11 09:47:04 2009
※ 引述《sunnypeng (sunny)》之铭言:
: 我想请问一下
: 我有一个计算机程式
: 我的input是
: char op;
: double num;
: cin>>op>>num;
: 运作正常,我也可以判断op是否为+-*/
: 但是我现在想要找一个方法,判断我输入的num是不是真的是一个数字
: 假设我输入+5
: 程式正常运作
: 我输入a5
: 程式会说invalid
: 但是我如果输入+a
: 程式就crash了
: 有没有办法可以让我判断 输入的是一个number而不是别的东西
: 谢谢
bool isOperator(char op)
{
return op == '+' || op == '-' || op == '*' || op == '/';
}
int main()
{
char op;
double num;
cin >> op >> num;
// 使用者的输入无法转换成数字时,cin.fail() 会回传 true
while( cin.fail() || !isOperator(op) ){
cout << "invalid input" << endl;
cin.clear(); // 重新设定 cin 的读取状态
cin.sync(); // 使用者刚才输入的垃圾还留在 cin 的 buffer 中
// 用 sync() 可以清掉这些垃圾
cin >> op >> num; // 重新读取
}
...
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.87.151.2
1F:推 sunnypeng:Thanks a lot ! 05/11 13:57
2F:推 stonehomelaa:原来还有 cin.sync() 以前都是用 cin.ignore()... 05/11 14:28
3F:→ james732:同楼上 XD 05/11 17:51