c++17的std::from_chars
c++17中的std::from_chars
1 | std::from_chars, std::from_chars_result |
在头文件<charconv>定义
1 | // (1) (C++17 起) |
按照后述模式分析字符序列 [first,last) 。若无字符匹配模式或若按照分析匹配字符获得的值不能以 value 的类型表示,则不修改 value ,否则将匹配模式的字符转译成算术值的文本表示,并将值存储于 value 。
- 1) 整数分析函数:期待等同于 std::strtol 于默认( “C” )本地环境所使用者相同的模式,并给定非零整数底,除了
- 对底 16 不识别 “0x” 或 “0X” 前缀
- 仅识别负号(不识别正号),而且只针对 value 的有符号整数类型。
库为所有有符号和无符号整数类型和 char 提供重载,这些类型是参数 value 的被引用类型。
- 2-4) 浮点分析函数:期待期待等同于 std::strtod 于默认( “C” )本地环境所使用者相同的模式,除了
- 不识别指数外的正号(在起始位置只允许出现负号)
- 若 fmt 设置了 std::chars_format::scientific 而无 std::chars_format::fixed ,则要求指数部分(否则可选)
- 若 fmt 设置了 std::chars_format::fixed 而无 std::chars_format::scientific ,则不允许可选的指数部分
- 若 fmt 为 std::chars_format::hex ,则不允许前缀 “0x” 或 “0X” (字符串 “0x123” 分析为值 “0” 和未分析的剩余 “x123” )。
- 任何情况下,按照 std::round_to_nearest 舍入后,结果值是至多二个最接近匹配模式的字符串的值的浮点值之一。
- 5) 返回值类型(见后述返回值)。 std::from_chars_result 无基类或 ptr 、 ec 及隐式声明的特殊成员函数以外的成员。
参数
first, last - 要分析的合法字符范围
value - 存储被分析值的输出参数,若分析成功
base - 使用的整数基底: 2 与 36 间的值(含上下限)。
fmt - 使用的浮点格式, std::chars_format 类型的位掩码
返回值
成功时,返回 from_chars_result 类型的值,其 ptr 指向首个不匹配模式的字符,或若所有字符皆匹配则指向拥有等于 last 的值,其 ec 被值初始化。
若无可匹配的模式,则返回 from_chars_result 类型的值,其 ptr 等于 first 且 ec 等于 std::errc::invalid_argument 。不修改 value 。
若模式匹配,但被分析值不在 value 的类型所表示的范围内,则返回 from_chars_result 类型的值,其 ec 等于 std::errc::result_out_of_range 且 ptr 指向首个不匹配模式的字符。不修改 value 。
例子:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客!