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::isspace 确定),直至找到首个非空白字符。随后尽可能提取组成有效浮点数表示形式的字符,并将其转换为浮点数值。有效浮点数值可以是以下形式之一:
- 十进制浮点表达式。它由以下部分组成:
-
- (可选) 正负号
- 非空的十进制数字序列,可选包含小数点字符(由当前 C locale 决定)(定义有效数字)
-
(可选)
e或E后接可选的减号或加号以及非空的十进制数字序列(定义以 10 为底的指数)
- 十六进制浮点表达式。它由以下部分组成:
-
- (可选) 正负号
-
0x或0X - 非空的十六进制数字序列,可选包含小数点字符(由当前 C locale 决定)(定义有效数字)
-
(可选)
p或P后接可选的减号或加号以及非空的十进制数字序列(定义以 2 为底的指数)
- infinity 表达式。它由以下部分组成:
-
- (可选) 正负号
-
INF或INFINITY(不区分大小写)
- not-a-number 表达式。它由以下部分组成:
-
- (可选) 正负号
-
NAN或NAN(字符序列 )(忽略NAN部分的大小写)。 字符序列 只能包含数字、拉丁字母和下划线。结果为静默 NaN 浮点数值。
- 任何其他可能被当前安装的 C locale 接受的表达式。
如果 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)
|
将字符序列转换为整数或浮点数值
(函数) |