是否可以在 C/C++ 中禁用隐式转换。
假设我想写一个让我只输入的有效性函数integers in range [1,10]
我已经写了:
#include <iostream>
using namespace std;
int main( )
{
int var=0;
cout << "Enter a number (Integer between 1 to 10) : ";
while( (!(cin >> var )) || (var > 10 ) || (var < 1) )
{
cout << "U nuts .. It can only be [1,10]\n";
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
cout << "Enter a number (Integer between 1 to 10) : ";
}
cout << "\nYou entered : " << var;
return 0;
}
但如果用户输入 9.5,它会通过将浮点数 9.5 转换为 9 并将其存储在 var 中来接受它。我希望任何浮动条目都被视为无效条目。我如何最紧凑地实现这一点。
我不想做这样的事情:
#include <iostream>
#include <cmath>
using namespace std;
int main( )
{
float var=0;
cout << "Enter a number (Integer between 1 to 10) : ";
while( (!(cin >> var )) ||(var < 1)|| (var > 10 ) || !(ceilf(var) == var) )
{
cout << "U nuts .. It can only be [1,10]\n";
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
cout << "Enter a number (Integer between 1 to 10) : ";
}
cout << "\nYou entered : " << var;
return 0;
}
这符合我的目的。但我想知道的是,有什么方法可以将 float 转换为 int - 我可以抑制或将其显示为错误输入。
类似于cin >> var
var 类型的方式int
- 如果我们输入char
它返回错误条件。我们可以为float
entry 实现相同的目标吗?
谢谢