我必须写一个C++程序,其中的一个函数是从键盘上读取两个double
类型的数字,并添加一个try
块,当键入错误的类型时抛出异常。我使用了cin.fail()
函数,但它没有工作。
这是我目前为止尝试过的,但是如果我输入双精度值,它不会抛出异常。
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
double j;
try{
cin>>j;
if (cin.fail())
throw (j);
else
cout << "Double Value " << j << endl;
}
catch(double a)
{
cout<<"Incompatible Datatype for value"<<a;
}
}
3条答案
按热度按时间az31mfrm1#
那么捕获字符串并处理异常呢?以下是总体思路:
jhiyze9q2#
我想这会有用的。
20jt8wwn3#
这个5年前的问题有两种方法:try/catch和阅读failbit。
要注意的是,当至少第一个输入的字符是正确的类型而其余的不是(特别是对于十进制类型)时,变量值赋值仍然进行,并且丢弃从第一个不同类型字符开始的其余输入。这意味着在这种情况下,
Digit A: 123F5
变成123
。