c++11 - 如何阻止 C++ 自动将 double 转换为 int?
问题描述
如何阻止 C++ 自动将 double 转换为 int 值?我知道这是设计使然,但我不希望这样。
我有问题的代码如下:
double validateInput()
{
int n = {};
cin >> n;
while (cin.fail() || (n < 1) || (n > 999))
{
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
n = {};
cout << "Please enter a valid number:" << endl;
cin >> n;
}
cout << "n = " << n << endl;
return (double)n;
}
该函数应该采用整数值并在输入除整数值之外的任何内容时返回错误。但是,由于 C++ 在设计上将 double 转换为 int,因此转换后的 double 值仍然可以通过。
此外, cin.fail() 似乎不是立即触发,而是仅在另一个 cin 事件发生时触发。如何更改我的代码以在输入双精度值时立即触发 cin.fail()?
解决方案
推荐阅读
- python - 添加了示例数据:在数据框中分别聚合几个类似命名的列
- reporting-services - 在 SSRS 中获取外部图像
- azure - Azure DevOps 中的输出变量释放管道门
- .net - 您可以在一个项目中混合使用 .NET Standard 2.0 和 2.1 吗?
- sass - 使用 DartJS Sass 编译器扩展在 vscode 中编译 sass 时出错
- python - 找到最接近质心的列 - Pandas
- c# - 在一个目录中发布所有 .net 核心项目
- maven - 为什么即使在排除中,Maven 也不会排除测试依赖项?
- linux - 在 Ubuntu Docker 容器中运行非 root Docker
- python - 有没有办法使用 python selenium 创建一个文本文件来编辑用户名和密码