【STL】头文件:<charconv>
<charconv> 用于
字符序列与整数、浮点数之间的高速双向转换。
目录
- 1 说明
- 2 函数
1 说明
典型用途:在 JSON、文本文件中序列化与反序列化浮点数。
转换函数经过性能优化,并且支持最短往返转换(shortest-round-trip)特性:将浮点数转为字符时,仅输出最少的有效数字,保证把该字符串解析回来能够还原出原始浮点数;
CRT 和 STL 其他函数均不具备该能力。
<charconv> 库的主要优点:
- 表示数字的字符序列不需要以 \0 空字符结尾;转换输出得到的字符结果同样不带空终止符。
- 转换函数不会动态分配内存,缓冲区完全由调用方提供。
- 转换函数不会抛出异常,通过返回结构体携带错误信息。
- 转换行为不受运行时浮点舍入模式影响。
- 与区域设置无关:小数点永远使用点号
.,不会受系统区域设置影响而变成逗号,。
使用要求:
- 头文件:
<charconv>- 命名空间:
std- 编译标准:
C++17 (/std:c++17) 及以上。
类型:
| 类型 | 说明 |
|---|---|
| chars_format | 枚举类,指定格式:定点、科学计数、十六进制等 |
| from_chars_result | 保存 from_chars 字符解析的返回结果 |
| to_chars_result | 保存 to_chars 数字序列化的返回结果 |
2 函数
| 函数 | 说明 |
|---|---|
| from_chars | 将字符序列解析为整数或者浮点数 |
| to_chars | 将整数、浮点数序列化写入调用方提供的字符缓冲区 |
注意:
- to_chars 最常见错误:缓冲区空间不足,返回 errc::value_too_large。
- from_chars 不会自动跳过空白字符;输入格式非法、数值超出类型可表示范围均会返回错误。