在 C 中将字符串转换为双精度数,并对非数字字符串进行特殊处理
在 C 中,可以使用以下命令无缝地将字符串转换为双精度数内置函数。然而,区分数字字符串和非数字字符串变得至关重要。为了应对这一挑战,我们提出了一个针对非数字字符串返回 0 的解决方案。
函数实现:
我们解决方案的核心在于 string_to_double 函数:
<code class="cpp">#include <sstream> double string_to_double(const std::string& s) { std::istringstream i(s); double x; if (!(i >> x)) return 0; return x; }</code>
工作原理:
测试函数:
在提供的测试用例中,我们演示了函数如何正确解释不同的数字和非数字字符串:
<code class="cpp">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")); // Non-numerical strings will return 0: assert(0 == string_to_double("foobar")); }</code>
限制:
需要注意的是,由于非数字字符串返回 0 的特定要求,无法区分代表零的数字字符串和真正的非数字字符串。
以上是如何在 C 中安全地将字符串转换为双精度并处理非数字字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!