C++ String::stod() 函式



C++ 的std::string::stod()函式用於將字串轉換為雙精度浮點數。它分析字串的初始字元作為浮點數並返回其值。如果轉換失敗,則丟擲 invalid_argument 異常。

如果我們取的值超出可表示值的範圍,則會丟擲 out_of_range 異常。

語法

以下是 std::string::stod() 函式的語法。

double stod (const string&  str, size_t* idx = 0);
double stod (const wstring& str, size_t* idx = 0);

引數

此函式有兩個引數,如下所述。

  • str - 它表示包含浮點數表示形式的字串物件。
  • idx - 它表示指向 size_t 型別物件的指標,其值由函式設定為 str 中數值之後下一個字元的位置。

返回值

此函式返回表示字串轉換值的雙精度型別。

示例 1

以下是用 C++ 使用 std::stod() 函式將字串轉換為雙精度的基本示例。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string number = "123.456";
   double value = stod(number);
   cout << "The double value = " << value << endl;
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出。

The double value = 123.456

示例 2

以下是 std::stod() 函式的另一個示例,用於從包含文字和數字的字串中提取雙精度值。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string mixedString = "Total: 250.75 USD";
   size_t pos;
   double amount = stod(mixedString.substr(7), & pos);
   cout << "Amount = " << amount << endl;
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出。

Amount = 250.75

示例 3

在此示例中,我們給出了無效的輸入,因此它將丟擲 invalid_argument 異常,因為字串無法轉換為雙精度。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string invalidNumber = "abc";
   try {
      double value = std::stod(invalidNumber);
      cout << "Value is: " << value << std::endl;
   } catch (const invalid_argument & e) {
      cout << "Invalid argument: " << e.what() << endl;
   }
   return 0;
}

輸出

以下是以上程式碼的輸出。

Invalid argument: stod          
string.htm
廣告