首頁 >後端開發 >C++ >如何在 C 中將字串轉換為雙精度數:使用 `std::istringstream` 和 `std::stod` 的簡單指南

如何在 C 中將字串轉換為雙精度數:使用 `std::istringstream` 和 `std::stod` 的簡單指南

Linda Hamilton
Linda Hamilton原創
2024-10-29 13:06:29912瀏覽

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