Repolode
fmtlib

fmtlib/fmt

一个 C++ 格式化库,提供比 C stdio 和 iostreams 更快、类型安全的替代方案,实现了 C++20 std::format。

Star
25,887
Fork
3,089
未关闭 Issue
16
最近提交
3天前

这是什么?

{fmt} 是一个开源的 C++ 文本格式化库,目标是比 C stdio 和 C++ iostreams 更快、更安全。它采用类似 Python 的格式字符串语法,并实现了 C++20 std::format 和 C++23 std::print 接口,写法接近现代 C++ 习惯。

库会在编译期检查格式字符串,例如对字符串使用无效的格式说明符会直接报编译错误。此外还提供兼容 printf 的 API、chrono 日期时间格式化、容器和区间输出、彩色终端输出,以及基于 Dragonbox 算法的浮点数格式化。用户也可以为自定义类型添加格式化支持。

{fmt} 没有外部依赖,既可以作为一小组头文件使用,也可以以纯头文件模式集成。项目采用 MIT 许可证,ClickHouse、MongoDB、PyTorch 和 spdlog 等项目都在使用它。

核心功能

  • 01采用类似 Python 的格式字符串语法,支持位置参数
  • 02实现 C++20 std::format 与 C++23 std::print
  • 03编译期检查格式字符串
  • 04基于 Dragonbox 算法的快速浮点数格式化
  • 05支持 chrono、区间和容器的格式化
  • 06可选纯头文件模式,无外部依赖

适用场景

  • 替换性能敏感 C++ 代码中的 printf 或 iostreams
  • 为日志库等组件生成日志消息
  • 在控制台输出日期、时间和容器内容
  • 编写需要兼容 C++20 或更早编译器的可移植代码

标签

常见问题

fmt 是什么?
一个 C++ 格式化库,提供比 C stdio 和 iostreams 更快、类型安全的替代方案,实现了 C++20 std::format。 {fmt} 是一个开源的 C++ 文本格式化库,目标是比 C stdio 和 C++ iostreams 更快、更安全。它采用类似 Python 的格式字符串语法,并实现了 C++20 std::format 和 C++23 std::print 接口,写法接近现代 C++ 习惯。
fmt 可以免费使用吗?用的什么许可证?
fmt 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
fmt 还在维护吗?
活跃维护中。fmt 最近一次提交是在 2026年10月18日。
fmt 适合用来做什么?
替换性能敏感 C++ 代码中的 printf 或 iostreams 为日志库等组件生成日志消息 在控制台输出日期、时间和容器内容 编写需要兼容 C++20 或更早编译器的可移植代码
在哪里获取 fmt?
源代码和安装说明在 GitHub 上:https://github.com/fmtlib/fmt

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目