一、使用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