在 C 中,可以使用 std::istringstream 和 std::stod 函数将字符串转换为双精度型。
#include
double string_to_double(const std::string& s) {
std::istringstream iss(s);
double x;
if (!(iss >> x)) {
return 0; // Return 0 for non-numerical strings
}
return x;
}
此函数的工作原理如下:
请注意,此函数无法完全区分所有允许的零字符串表示形式和非数字字符串。例如,它将以下所有字符串视为零:
"0" "0." "0.0"
下面是一些测试用例来演示 string_to_double 函数的用法:
#include
int main() {
assert(0.5 == string_to_double("0.5"));
assert(0.5 == string_to_double("0.5 "));
assert(0.5 == string_to_double(" 0.5"));
assert(0.5 == string_to_double("0.5a"));
assert(0 == string_to_double("0"));
assert(0 == string_to_double("0."));
assert(0 == string_to_double("0.0"));
assert(0 == string_to_double("foobar"));
return 0;
}
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3