c ++ atof.如何检查输入错误?

Pau*_* R. 1 c++ string double atof

所以我使用atof将我的字符串转换为double.但是我需要知道输入是否错误(如y564等).我怎么检查呢?我需要正确的号码才能进一步采取行动.

double x = atof(s.c_str());
Run Code Online (Sandbox Code Playgroud)

mar*_*inj 6

您可能想要使用std :: stod:

[生活]

bool parse_double(std::string in, double& res) {
    try {
        size_t read= 0;
        res = std::stod(in, &read);
        if (in.size() != read)
            return false;
    } catch (std::invalid_argument) {
        return false;
    }    
    return true;
}

int main()
{
    double d;
    bool b = parse_double("123z", d);
    if (b)
      std::cout << d;
    else
      std::cout << "Wrong input";
}
Run Code Online (Sandbox Code Playgroud)

[编辑]

你可以在这里找到:

返回值

成功时str的内容对应的double值.如果转换后的值超出返回类型的范围,则返回值未定义.如果无法执行转换,则返回0.0.

这样就无法确定输入是错还是包含0.