【STL】头文件:<charconv>

发布时间:2026/10/27 1:59:06
【STL】头文件:<charconv>

<charconv> 用于字符序列与整数、浮点数之间的高速双向转换。


目录

  • 1 说明
  • 2 函数

1 说明

典型用途:在 JSON、文本文件中序列化与反序列化浮点数。

转换函数经过性能优化,并且支持最短往返转换(shortest-round-trip)特性:将浮点数转为字符时,仅输出最少的有效数字,保证把该字符串解析回来能够还原出原始浮点数;CRT 和 STL 其他函数均不具备该能力。

<charconv> 库的主要优点:

  1. 表示数字的字符序列不需要以 \0 空字符结尾;转换输出得到的字符结果同样不带空终止符。
  2. 转换函数不会动态分配内存,缓冲区完全由调用方提供。
  3. 转换函数不会抛出异常,通过返回结构体携带错误信息。
  4. 转换行为不受运行时浮点舍入模式影响。
  5. 与区域设置无关:小数点永远使用点号.,不会受系统区域设置影响而变成逗号,。

使用要求:

  • 头文件:<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 不会自动跳过空白字符;输入格式非法、数值超出类型可表示范围均会返回错误。