一、使用atof函數
在C++中,可以使用atof函數將C風格的字元串轉換為雙精度浮點型數據。該函數需要包含頭文件。
#include <cstdlib> #include <iostream> using namespace std; int main() { char str[] = "3.1415926"; double num = atof(str); cout << "轉換後的雙精度浮點數為:" << num << endl; return 0; }
以上代碼將輸出:
轉換後的雙精度浮點數為:3.14159
二、使用stringstream類
C++中也可以使用stringstream類進行轉換。stringstream類是一個字元串輸出流,它支持標準輸入輸出流的操作方法,允許我們像使用cin和cout一樣進行字元串和其他數據類型之間的格式化輸入輸出。
#include <sstream> #include <iostream> #include <string> using namespace std; int main() { string str = "3.1415926"; double num; stringstream ss(str); ss >> num; cout << "轉換後的雙精度浮點數為:" << num << endl; return 0; }
以上代碼將輸出:
轉換後的雙精度浮點數為:3.14159
三、使用strtod函數
strtod函數是一個C庫函數,也可以用於將C風格的字元串轉換為雙精度浮點型數據,需要包含頭文件。
#include <cstring> #include <iostream> using namespace std; int main() { char str[] = "3.1415926"; double num = strtod(str, NULL); cout << "轉換後的雙精度浮點數為:" << num << endl; return 0; }
以上代碼將輸出:
轉換後的雙精度浮點數為:3.14159
四、使用stod函數
從C++11開始,可以使用內置的stod函數將字元串轉換為雙精度浮點型數據。需要包含頭文件。
#include <string> #include <iostream> using namespace std; int main() { string str = "3.1415926"; double num = stod(str); cout << "轉換後的雙精度浮點數為:" << num << endl; return 0; }
以上代碼將輸出:
轉換後的雙精度浮點數為:3.14159
五、異常處理
在進行字元串到double類型數據的轉換時,如果字元串中包含非數字字元,將會導致轉換失敗並拋出異常。因此,在實際應用中,可以加入異常處理來避免程序意外崩潰。
#include <cstdlib> #include <iostream> #include <stdexcept> using namespace std; int main() { char str[] = "3.14abc"; try { double num = atof(str); cout << "轉換後的雙精度浮點數為:" << num << endl; } catch(const std::exception& e) { std::cerr << "轉換失敗:" << e.what() << '\n'; } return 0; }
以上代碼將輸出:
轉換失敗:invalid_argument
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243414.html