一、使用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/n/243414.html
微信扫一扫
支付宝扫一扫