首页 >后端开发 >C++ >如何在 C 中将字符串转换为双精度数:使用 `std::istringstream` 和 `std::stod` 的简单指南

如何在 C 中将字符串转换为双精度数:使用 `std::istringstream` 和 `std::stod` 的简单指南

Linda Hamilton
Linda Hamilton原创
2024-10-29 13:06:29914浏览

How to Convert Strings to Doubles in C  : A Simple Guide Using `std::istringstream` and `std::stod`

在 C 中将字符串转换为双精度

在 C 中,可以使用 std::istringstream 和 std::stod 函数将字符串转换为双精度。

<code class="cpp">#include <sstream>

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;
}</code>

此函数的工作原理如下:

  1. 从输入字符串 s 创建一个 std::istringstream 对象 iss。
  2. 使用 >>运算符从 iss 中提取 double 值。
  3. 如果提取成功,则返回 double 值。
  4. 如果提取失败(例如,字符串不是数字),则返回 0。

请注意,此函数无法完全区分所有允许的零字符串表示形式和非数字字符串。例如,它将以下所有字符串视为零:

"0"
"0."
"0.0"

以下是一些测试用例来演示 string_to_double 函数的用法:

<code class="cpp">#include <cassert>

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;
}</code>

以上是如何在 C 中将字符串转换为双精度数:使用 `std::istringstream` 和 `std::stod` 的简单指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn