【发布时间】:2019-03-07 07:46:45
【问题描述】:
由于我对异常非常陌生,因此我在使用以下内存异常代码时遇到了一些问题。基本上,我需要计算并显示 10 个正输入的总和。在输入过程中,我的程序应该使用异常机制来显示一条消息,如果输入是这样,它不允许负数/非数字(NaN),然后退出程序。我被告知使用 std::cin.fail() 来检测输入的值是否适合变量类型(但我不确定如何实现它)。感谢您的帮助,谢谢!
#include <iostream>
int main() {
int number;
int a=-2;
try {
for(int i=0; i<10;i++) {
std::cin>>number;
}
}
catch (...) {
number==-number?
std::cout << "Its negative"<<std::endl;
number==a?
std::cout << "Its NaN"<<std::endl;
}
}
【问题讨论】:
-
流本身可以作为布尔值进行测试,以查看读取是否失败。例如:
if (std::cin>>number) { test number for negative/NaN and throw exception if true } else { didn't get a number at all. Throw exception } -
嗨@user4581301,我如何测试NaN?感谢您的意见。
-
如果您的编译器相当新(支持 C++11),您可以使用恰当命名的
isnan。如果没有,it gets ugly.