如何在 C++ 中通过 cin 将“无穷大”作为值加倍?

Sou*_*a B 4 c++ double user-input cin console-application

在我的程序中,我将斜率值作为用户的输入。代码片段如下所示:

double m;
std::cout << "Enter slope value:";
std::cin >> m;
Run Code Online (Sandbox Code Playgroud)

但目前我无法给出“无穷大”作为斜率值。如果输入“inf”,m 将存储 0,可能是由于解析错误。如果我输入非常大的数字,例如 1e1000,m 将存储 DBL_MAX,即 1.79769e+308。

那么我应该在控制台中输入什么,以便 m 包含“无穷大”的值?(垂直线的斜率)。

use*_*522 5

那么我应该在控制台中输入什么,以便 m 包含“无穷大”的值?(垂直线的斜率)。

std::istream::operator>>(double&)我认为目前不支持这一点。

最终它将用于将std::strtod提取的字符串转换为 adouble并且std::strtod应该接受INFand INFINITY,忽略大小写并带有可选的+/-前缀。

然而,目前字符的提取是通过std::num_get::do_get仅认为字符0123456789abcdefpxABCDEFPX+-有效的方式进行的。

LWG 2381>>中,它解决了和之间的一些不一致strtod,还提到无穷大和 NaN 不在该决议的范围内。

因此,您需要读入字符串并手动调用std::strtod// 。std::stodstd::from_chars