一个 C++ 格式化库,提供比 C stdio 和 iostreams 更快、类型安全的替代方案,实现了 C++20 std::format。
fastfloat/fast_float
纯头文件的 C++ 库,快速且精确地把字符串解析为 float、double 和整数,实现 from_chars 接口。
- Star
- 2,134
- Fork
- 200
- 未关闭 Issue
- 29
- 最近提交
- 5天前
这是什么?
fast_float 是一个纯头文件的 C++ 库,实现了类似 C++17 标准的 from_chars 函数,可解析 float、double 以及各种整数类型。它能把 "1.3e10" 这类 ASCII 十进制字符串精确转换为二进制数值,遵循 IEEE 舍入规则(包括向偶数舍入),且不抛出异常、不分配内存。
除标准接口外,库还支持自定义小数点符号、Fortran 风格数字,以及严格的 JSON 或 JavaScript 语法检查。它也能处理 UTF-16、UTF-32 输入,支持定宽浮点类型,并可在 C++20 下进行编译期求值。
项目兼容 C++11,可在 Visual Studio、macOS、Linux 和 FreeBSD 上使用,覆盖 32 位与 64 位、大端与小端系统。可通过 CMake、CPM、Conan、Homebrew 引入,也可直接使用单头文件版本。
核心功能
- 01解析 float 和 double 时结果精确,遵循向偶数舍入规则。
- 02支持二进制、十进制、十六进制等进制的整数解析。
- 03通过 std::errc 返回错误,不抛出异常,也不分配内存。
- 04提供 JSON、JavaScript、Fortran 以及自定义小数点的解析模式。
- 05支持 ASCII、UTF-8、UTF-16 和 UTF-32 输入。
- 06可作为纯头文件库或单头文件使用。
适用场景
- 在数据库引擎或数据管道中批量解析数字文本。
- 为需要严格语法校验的 JSON 或 JavaScript 解析器提供数字转换。
- 在支持 C++11 及以上版本的 C++ 项目中加入高速数字解析。
- 处理 CSV 或日志文件中的数值字段,对解析速度有要求的场景。
快速上手
- 1
将 fast_float 目录复制到项目的包含路径中,并引入头文件
使用前须知
- 仅支持十进制输入,不解析十六进制字符串。
- 不支持 long double 类型。
- 假定浮点舍入模式为就近舍入(FE_TONEAREST)。
标签
常见问题
- fast_float 是什么?
- 纯头文件的 C++ 库,快速且精确地把字符串解析为 float、double 和整数,实现 from_chars 接口。 fast_float 是一个纯头文件的 C++ 库,实现了类似 C++17 标准的 from_chars 函数,可解析 float、double 以及各种整数类型。它能把 "1.3e10" 这类 ASCII 十进制字符串精确转换为二进制数值,遵循 IEEE 舍入规则(包括向偶数舍入),且不抛出异常、不分配内存。
- fast_float 可以免费使用吗?用的什么许可证?
- fast_float 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- fast_float 还在维护吗?
- 活跃维护中。fast_float 最近一次提交是在 2026年10月19日。
- fast_float 适合用来做什么?
- 在数据库引擎或数据管道中批量解析数字文本。 为需要严格语法校验的 JSON 或 JavaScript 解析器提供数字转换。 在支持 C++11 及以上版本的 C++ 项目中加入高速数字解析。 处理 CSV 或日志文件中的数值字段,对解析速度有要求的场景。
- fast_float 怎么安装和运行?
- 将 fast_float 目录复制到项目的包含路径中,并引入头文件
- 在哪里获取 fast_float?
- 源代码和安装说明在 GitHub 上:https://github.com/fastfloat/fast_float
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个 C++11 单头文件库,用于构建 HTTP/HTTPS 服务端和客户端,采用阻塞式 socket I/O。
一个快速、易用、类 Flask 路由风格的 C++ 微框架,用于构建 HTTP 和 WebSocket 服务。
一套仅含头文件的 C++ 哈希表与 B 树容器库,可替代 std 中的无序和有序容器,速度快、内存占用低。
纯头文件的 C++14 无锁环形缓冲队列,用于线程间以极低延迟传递消息。
Luanti(原 Minetest)是一个开源体素游戏引擎,支持用 Lua 进行模组开发和游戏创作。