std::stof, std::stod, std::stold
| 定义于头文件 <string>
|
||
float stof ( const std::string& str, std::size_t* pos = nullptr );
|
(1) | (C++11 起) |
float stof ( const std::wstring& str, std::size_t* pos = nullptr );
|
(2) | (C++11 起) |
double stod ( const std::string& str, std::size_t* pos = nullptr );
|
(3) | (C++11 起) |
double stod ( const std::wstring& str, std::size_t* pos = nullptr );
|
(4) | (C++11 起) |
long double stold( const std::string& str, std::size_t* pos = nullptr );
|
(5) | (C++11 起) |
long double stold( const std::wstring& str, std::size_t* pos = nullptr );
|
(6) | (C++11 起) |
解释字符串 str 中的浮点值。
令 ptr 为一个内部(转换函数内)指针,其类型为 char* (1,3,5) 或 wchar_t* (2,4,6),相应而定。
std::strtof(str.c_str(), &ptr).std::wcstof(str.c_str(), &ptr).std::strtod(str.c_str(), &ptr).std::wcstod(str.c_str(), &ptr).std::strtold(str.c_str(), &ptr).std::wcstold(str.c_str(), &ptr).函数丢弃所有空白符(由 std::isspace 确定),直到找到第一个非空白符。然后它取尽可能多的字符以构成有效的浮点数表示,并将其转换为浮点值。有效的浮点值可以是以下之一:
- 十进制浮点数表达式。由以下部分组成:
- (可选) 正负号
- 非空十进制数字序列,可选地包含小数点字符(由当前 C 本地环境 确定)(定义有效数)
- (可选)
e或E后跟可选的负号或正号以及非空十进制数字序列(定义基数为 10 的指数)
- 十六进制浮点数表达式。由以下部分组成:
- (可选) 正负号
0x或0X- 非空十六进制数字序列,可选地包含小数点字符(由当前 C 本地环境 确定)(定义有效数)
- (可选)
p或P后跟可选的负号或正号以及非空十进制数字序列(定义基数为 2 的指数)
- 无穷表达式。由以下部分组成:
- (可选) 正负号
INF或INFINITY不区分大小写
- 非数值表达式。由以下部分组成:
- (可选) 正负号
NAN或NAN(char_sequence )不区分NAN部分的大小写。char_sequence 只能包含数字、拉丁字母和下划线。结果是一个安静的 NaN 浮点值。
- 当前安装的 C 本地环境 可能接受的任何其他表达式。
如果 pos 不是空指针,则 ptr 将接收 str.c_str() 中第一个未转换字符的地址,并将计算该字符的索引并存入 *pos,给出转换已处理的字符数。
参数
| str | - | 要转换的字符串 |
| pos | - | 用于存储已处理字符数的整数地址 |
返回值
转换为指定浮点类型的字符串。
异常
std::invalid_argument 若无法执行任何转换。
若转换后的值超出结果类型的范围,或底层函数( std::strtof 、 std::strtod 或 std::strtold )将 errno 设置为 ERANGE ,则抛出 std::out_of_range 。
示例
|
本节内容不完整
原因:缺少示例 |
缺陷报告
下列行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| LWG 2009 | C++11 |
若转换值超出结果类型范围时
不会抛出 std::out_of_range 异常 |
将会抛出异常 |
| LWG 2403 | C++11 |
stof
调用的是
std::strtod
或
std::wcstod
|
stof
调用
std::strtof
或
std::wcstof
|
参见
|
(C++11)
(C++11)
(C++11)
|
将字符串转换为有符号整数
(函数) |
|
(C++11)
(C++11)
|
将字符串转换为无符号整数
(函数) |
|
(C++17)
|
将字符序列转换为整数或浮点数值
(函数) |