0

我想将字符串转换为双精度。我这样做:

bool String2ValueType(const std::string & a_str_value_type, double & a_result)
{
    if(a_str_value_type.empty())
        return false;

    char * end;
    double result = strtod(a_str_value_type.c_str(), &end);
    if(*end!=NULL)
        return false;
    a_result = result;
    return true;
}

如果结果为 0,我如何检查结果是否正常?例如,如果我发送字符串(“0”),我将得到 0,这不是错误。但我也可以发送一些其他字符串——即数字,但它不会被转换,我也会得到 0(错误),(我说的是 *end == 0 时的情况)。

4

1 回答 1

4

如果不执行转换,则返回零并将 nptr 的值存储在 endptr 引用的位置。

至少,手册页是这么说的。

于 2015-06-29T09:39:57.320 回答