std::stod:“123.456”-> 123.456
std::stod
是 C++ 标准库中一个用于将字符串转换为 double
类型的函数。它属于 <string>
头文件中的函数,通常用于将包含数字的字符串转换为相应的浮点数值。
函数原型
double stod(const std::string& str, std::size_t* pos = nullptr);
参数
str
:要转换的字符串,应该表示一个有效的浮点数。pos
(可选):指向std::size_t
类型的指针,用于存储转换后第一个未处理字符的位置。如果不需要此功能,可以传递nullptr
。
返回值
返回转换后的 double
值。如果转换失败(例如字符串不代表有效的浮点数),则会抛出 std::invalid_argument
异常。如果转换的值超出了 double
的表示范围,可能会抛出 std::out_of_range
异常。
示例
#include <iostream>
#include <string>
int main() {
std::string str = "3.14159";
try {
double value = std::stod(str);
std::cout << "Converted value: " << value << std::endl; // 输出 "Converted value: 3.14159"
} catch (const std::invalid_argument& e) {
std::cerr << "Invalid argument: " << e.what() << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << "Out of range: " << e.what() << std::endl;
}
return 0;
}
注意事项
-
异常处理:使用
std::stod
时要注意异常处理,确保处理可能出现的错误。 -
空字符串:如果输入字符串为空,将抛出
std::invalid_argument
。 -
字符位置:如果使用
pos
参数,它将被设置为转换后未处理字符的索引位置,这在需要进一步处理时很有用。
std::stod
是在需要将字符串转换为浮点数时的常用工具,提供了简单且安全的转换方式。