」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 C++ 中將字串轉換為雙精度數:使用 `std::istringstream` 和 `std::stod` 的簡單指南

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

發佈於2024-11-16
瀏覽:522

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

在C 中將字串轉換為雙精度型

在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;
}

此函數的工作原理如下:

  1. 從輸入字串 s 建立一個 std::istringstream 物件 iss。
  2. 使用 >> 運算子提取iss 中的 double 值。
  3. 如果提取成功,則傳回 double 值。
  4. 如果提取失敗(例如,字串不是數字),則傳回 0。

請注意,此函數無法完全區分所有允許的零字串表示形式和非數字字串。例如,它將以下所有字串視為零:

"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