一、使用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
微信掃一掃
支付寶掃一掃