超厉害!{fmt}开源格式化库快速安全性能优,众多知名项目都在用! 发布时间:2026/11/3 0:21:00 {fmt}开源格式化库快速安全性能卓越众多知名项目都在用{fmt} 是一个开源的格式化库为 C 语言的 stdio 和 C 的 iostreams 提供了一种快速且安全的替代方案。文档与问答可在 StackOverflow 上使用标签 fmt 提问获取文档速查表还能在 Compiler Explorer 中尝试使用 {fmt}。特性{fmt} 具有众多出色特性拥有简单的格式化 API支持使用位置参数进行本地化。实现了 C20 的 std::format 和 C23 的 std::print是 C 标准实现。格式字符串语法与 Python 的 format 类似有类似 Python 的格式化字符串语法。运用 Dragonbox 算法是快速的 IEEE 754 浮点数格式化器保证正确的舍入、简洁性和往返性。提供跨平台的 Unicode 支持具备可移植的 Unicode 特性。是安全的 printf 实现包括对位置参数的 POSIX 扩展。支持用户自定义类型具备可扩展性。高性能比常见标准库实现的 (s)printf、iostreams、to_string 和 to_chars 更快详情可查看速度测试和“每秒将一亿个整数转换为字符串”的测试。代码体积小在最小配置下源代码仅由三个文件base.h、format.h 和 format-inl.h组成编译后的代码体积也很小具体可查看编译时间和代码膨胀测试。可靠性高拥有大量测试用例并持续进行模糊测试。安全性强完全类型安全格式字符串中的错误可在编译时报告自动内存管理可防止缓冲区溢出错误。易于使用代码库小巧且自包含无外部依赖采用宽松的 MIT 许可证。跨平台兼容性好在不同平台上输出一致支持旧版本编译器。代码干净无警告即使在 -Wall -Wextra -pedantic 等高警告级别下代码库也不会产生警告。默认与区域设置无关无需考虑区域设置的影响。可通过 FMT_HEADER_ONLY 宏启用可选的仅头文件配置。更多详情请查看文档。示例输出到标准输出#include fmt/core.hint main() { fmt::print(Hello, world!\n);}格式化字符串std::string s fmt::format(The answer is {}., 42); // s The answer is 42.使用位置参数格式化字符串std::string s fmt::format(Id rather be {1} than {0}., right, happy); // s Id rather be happy than right.输出日期和时间#include fmt/chrono.hint main() { auto now std::chrono::system_clock::now(); fmt::print(Date and time: {}\n, now); fmt::print(Time: {:%H:%M}\n, now);}输出结果Date and time: 2023-12-26 19:10:31.557195597Time: 19:10输出容器#include fmt/ranges.h#include vectorint main() { std::vectorint v {1, 2, 3}; fmt::print({}\n, v);}输出结果[1, 2, 3]在编译时检查格式字符串std::string s fmt::format({:d}, I am not a number);}在 C20 中这会导致编译时错误因为 d 是字符串的无效格式说明符。单线程写入文件#include fmt/os.hint main() { auto out fmt::output_file(guide.txt); out.print(Dont {}, Panic);}这比 fprintf 快达 9 倍。带颜色和文本样式输出#include fmt/color.hint main() { fmt::print(fg(fmt::color::crimson) | fmt::emphasis::bold, Hello, {}!\n, world); fmt::print(fg(fmt::color::floral_white) | bg(fmt::color::slate_gray) | fmt::emphasis::underline, Olá, {}!\n, Mundo); fmt::print(fg(fmt::color::steel_blue) | fmt::emphasis::italic, 你好{}\n, 世界);}在支持 Unicode 的现代终端上的输出效果更佳。基准测试速度测试库方法运行时间 (s)libcprintf0.66libcstd::ostream1.63{fmt}fmt::print0.44Boost Formatboost::format3.89Folly Formatfolly::format1.28{fmt} 是基准测试方法中最快的比 printf 快约 50%。上述结果是在 macOS 15.6.1 上使用 clang -O3 -DNDEBUG -DSPEED_TEST -DHAVE_FORMAT 编译 tinyformat_test.cpp 并取三次运行的最佳结果得出的。在测试中格式字符串 %0.10f:%04d:%g:%s:%p:%c:%%\n 或等效字符串被填充 200 万次输出结果发送到 /dev/null更多详情可参考源代码。在 IEEE754 浮点数和双精度数格式化方面dtoa-benchmark{fmt} 比 std::ostringstream 和 sprintf 快 20 - 30 倍也比 double-conversion 和 ryu 更快。编译时间和代码膨胀format-benchmark 中的 bloat-test.py 脚本用于测试非平凡项目的编译时间和代码膨胀情况。它生成 100 个翻译单元并在每个单元中使用 printf() 或其替代方案 5 次以模拟一个中等规模的项目。以下是在 Apple clang version 15.0.0 (clang - 1500.1.0.2.5)、macOS Sonoma 系统上三次运行的最佳结果优化构建 (-O3)方法编译时间 (s)可执行文件大小 (KiB)剥离后大小 (KiB)printf1.65450IOStreams28.49884{fmt}5.05450tinyformat32.6164136Boost Format55.0530317{fmt} 编译速度快在每次调用的二进制大小方面与 printf 相当在该系统上误差在舍入范围内。非优化构建方法编译时间 (s)可执行文件大小 (KiB)剥离后大小 (KiB)printf1.45450IOStreams27.08868{fmt}4.78784tinyformat28.1185145Boost Format38.9678381为了仅比较格式化函数的开销libc、lib(std)c 和 libfmt 均作为共享库链接。Boost Format 是仅头文件的库因此不提供链接选项。运行测试若要运行测试需参考“构建库”部分了解如何构建库并运行单元测试。基准测试位于单独的仓库 format-benchmark 中要运行基准测试首先需要克隆该仓库并使用 CMake 生成 Makefile$ git clone --recursive https://github.com/fmtlib/format-benchmark.git$ cd format-benchmark$ cmake .然后可以运行速度测试$ make speed-test或者运行代码膨胀测试$ make bloat-test代码迁移clang - tidy v18 提供了 modernize-use-std-print 检查若进行相应配置它能够将 printf 和 fprintf 的调用转换为 fmt::print默认转换为 std::print。使用该库的知名项目众多知名项目都在使用 {fmt} 库0 A.D.一款免费、开源、跨平台的实时策略游戏。AMPL/MP一个用于数学编程的开源库。Apples FoundationDB一个开源的分布式事务性键值存储。Aseprite动画精灵编辑器和像素艺术工具。AvioBook一套全面的飞机运营套件。Blizzard Battle.net一个在线游戏平台。Celestia太空实时 3D 可视化工具。Ceph一个可扩展的分布式存储系统。ccache一个编译器缓存。ClickHouse一个分析型数据库管理系统。ContextVision医学成像软件。Contour一个现代终端模拟器。CUAUV康奈尔大学的自主水下航行器。Drake一个用于非线性动力系统的规划、控制和分析工具箱麻省理工学院。EnvoyC 的 L7 代理和通信总线Lyft。FiveMGTA V 的修改框架。fmtlog一个高性能的 fmtlib 风格的日志库延迟可达纳秒级。FollyFacebook 的开源库。GemRBBioware 无限引擎的便携式开源实现。Grand Mountain Adventure一款精美的开放世界滑雪和单板滑雪游戏。HarpyWar/pvpgn经过优化的玩家对战游戏网络。KBEngine一个开源的大型多人在线游戏MMOG服务器引擎。KeypirinhaWindows 的语义启动器。Kodi原 xbmc家庭影院软件。Knuth高性能的比特币全节点。libunicode一个现代的 C17 Unicode 库。MariaDB关系型数据库管理系统。Microsoft Verona用于并发所有权的研究性编程语言。MongoDB分布式文档数据库。MongoDB Smasher一个用于生成随机数据集的小工具。OpenSpace一个开源的天文可视化框架。PenUltima Online (POL)一个与大多数《网络创世纪》客户端兼容的 MMO 服务器。PyTorch一个开源的机器学习库。quasardb一个分布式、高性能的关联数据库。Quill异步低延迟日志库。QKW将别名泛化以简化导航并执行复杂的多行终端命令序列。redis - cerberus一个 Redis 集群代理。redpanda一个比 Kafka® 快 10 倍的关键任务系统替代方案用 C 编写。rpclib一个现代的 C msgpack - RPC 服务器和客户端库。Salesforce Analytics Cloud商业智能软件。Scylla一个与 Cassandra 兼容的 NoSQL 数据存储单服务器每秒可处理 100 万笔交易。Seastar一个先进的开源 C 框架用于现代硬件上的高性能服务器应用程序。spdlog超快速的 C 日志库。Stellar金融平台。Touch Surgery手术模拟器。TrinityCore开源的大型多人在线角色扮演游戏MMORPG框架。 userver framework开源的异步框架拥有丰富的抽象和数据库驱动。Windows Terminal全新的 Windows 终端。如果您知道其他使用该库的项目请通过电子邮件或提交问题告知。维护者{fmt} 库由 Victor Zverovichvitaut维护同时也有许多其他人员做出了贡献。部分贡献者和版本信息可查看“贡献者”和“版本发布”部分。如果您的贡献未被列出或提及有误请告知我们会及时更正。 相关新闻 HTTPS一键升级脚本实战:从原理到验证的完整指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/10/27 9:43:47 蛋白产品噱头满天飞,如何识别真正蛋白科技创新公司 蛋白营养赛道快速扩张,但行业创新虚火问题十分突出。不少企业把宣传包装当作创新,只是简单复刻市面上成熟配方,靠概念名词炒作;部分品牌没有独立的蛋白技术研发平台,缺少核心工艺专利,产品全部委托外部贴牌… 2026/10/29 0:29:10 用 AI 半年,我怎么越用越累?大厂的人说了大实话 用 AI 之后,我原以为能早点下班。结果半年下来,活反而更多了、标准更高了、人更累了。 这不是我一个人的错觉。最近看到一份访谈:4 位在大厂一线干了七八年、甚至十五年的管理者,说了一堆大实话——AI 到底让谁更累、先压扁谁、谁… 2026/10/30 10:25:35 最新新闻 X-AnyLabeling + autodistill + Grounded-SAM:构建高效自动标注与训练闭环 1. 开场:为什么我最终选定了这套自动标注流程做CV项目最烦的事情是什么?不是调参,不是推理优化,是标数据。我接过不少项目,从工业质检到遥感影像,光是整理标注团队的工作流、检查标注质量、处理格式转换就占… 2026/11/3 5:21:15 基于PCA9422与K60的便携设备电源管理与低功耗设计 便携设备做电源这件事,前期省下来的每一分功耗,最后都会以返工工时的形式还回来。我最近刚收尾一个手持式数据采集终端的电源系统,主控用的是 MK60DN512(下文简称 K60),电源管理核心用的是 PCA9422 这颗带充… 2026/11/3 5:21:15 LQR控制在车辆主动悬架系统中的应用与仿真 1. 项目背景与核心目标在车辆工程领域,悬架系统对行驶平顺性和操控稳定性起着决定性作用。传统被动悬架由于参数固定,难以适应复杂多变的路况。而主动悬架通过实时调节阻尼或刚度特性,能显著提升车辆动态性能。本项目采用线性二次型调节器(LQ… 2026/11/3 5:21:15 配置文件即信任边界:Jira/Confluence权限提升风险与加固 1. 一条漏洞公告背后,真正值得警惕的是"配置文件即信任边界"CVE-2026-21589 这条公告出来的时候,我第一反应不是去看它的影响版本列表,而是盯着标题里那半句"一个配置文件就能夺走管理员权限"。做过几年企业级协作平台运… 2026/11/3 5:21:15 模型压缩工程实践:量化、剪枝与蒸馏的硬件协同优化 1. 项目概述:这不是一个“一键优化”的魔法按钮,而是一套面向生产环境的模型瘦身工程方法论“Model-Optimizer”这个名字听起来像某个图形界面软件,或者某个命令行工具的简称——但如果你真把它当成点几下鼠标就能让大模型飞起来的“加速器”… 2026/11/3 5:21:15 个性化活动推荐系统架构与算法实践 1. 项目概述:个性化活动推荐平台的商业价值与技术定位"个性化活动智能推荐平台"这个项目名称背后,隐藏着当前互联网服务领域最炙手可热的两个技术方向:个性化推荐与智能匹配。作为一个长期观察推荐系统演进的从业者,我见… 2026/11/3 5:18:15 日新闻 PIC18F86J10与MAX14431BAEE+的隔离SPI通信设计与调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:02:34 基于MAX14431与PIC18F47K42的隔离SPI通信设计实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:02:34 MAX14431与STM32F417ZG的SPI隔离通信链路设计与实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:02:34 周新闻 DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:38:30 DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05 DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05 月新闻 DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:38:30 DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05 DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05
HTTPS一键升级脚本实战:从原理到验证的完整指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/10/27 9:43:47
蛋白产品噱头满天飞,如何识别真正蛋白科技创新公司 蛋白营养赛道快速扩张,但行业创新虚火问题十分突出。不少企业把宣传包装当作创新,只是简单复刻市面上成熟配方,靠概念名词炒作;部分品牌没有独立的蛋白技术研发平台,缺少核心工艺专利,产品全部委托外部贴牌… 2026/10/29 0:29:10
用 AI 半年,我怎么越用越累?大厂的人说了大实话 用 AI 之后,我原以为能早点下班。结果半年下来,活反而更多了、标准更高了、人更累了。 这不是我一个人的错觉。最近看到一份访谈:4 位在大厂一线干了七八年、甚至十五年的管理者,说了一堆大实话——AI 到底让谁更累、先压扁谁、谁… 2026/10/30 10:25:35
X-AnyLabeling + autodistill + Grounded-SAM:构建高效自动标注与训练闭环 1. 开场:为什么我最终选定了这套自动标注流程做CV项目最烦的事情是什么?不是调参,不是推理优化,是标数据。我接过不少项目,从工业质检到遥感影像,光是整理标注团队的工作流、检查标注质量、处理格式转换就占… 2026/11/3 5:21:15
基于PCA9422与K60的便携设备电源管理与低功耗设计 便携设备做电源这件事,前期省下来的每一分功耗,最后都会以返工工时的形式还回来。我最近刚收尾一个手持式数据采集终端的电源系统,主控用的是 MK60DN512(下文简称 K60),电源管理核心用的是 PCA9422 这颗带充… 2026/11/3 5:21:15
LQR控制在车辆主动悬架系统中的应用与仿真 1. 项目背景与核心目标在车辆工程领域,悬架系统对行驶平顺性和操控稳定性起着决定性作用。传统被动悬架由于参数固定,难以适应复杂多变的路况。而主动悬架通过实时调节阻尼或刚度特性,能显著提升车辆动态性能。本项目采用线性二次型调节器(LQ… 2026/11/3 5:21:15
配置文件即信任边界:Jira/Confluence权限提升风险与加固 1. 一条漏洞公告背后,真正值得警惕的是"配置文件即信任边界"CVE-2026-21589 这条公告出来的时候,我第一反应不是去看它的影响版本列表,而是盯着标题里那半句"一个配置文件就能夺走管理员权限"。做过几年企业级协作平台运… 2026/11/3 5:21:15
模型压缩工程实践:量化、剪枝与蒸馏的硬件协同优化 1. 项目概述:这不是一个“一键优化”的魔法按钮,而是一套面向生产环境的模型瘦身工程方法论“Model-Optimizer”这个名字听起来像某个图形界面软件,或者某个命令行工具的简称——但如果你真把它当成点几下鼠标就能让大模型飞起来的“加速器”… 2026/11/3 5:21:15
个性化活动推荐系统架构与算法实践 1. 项目概述:个性化活动推荐平台的商业价值与技术定位"个性化活动智能推荐平台"这个项目名称背后,隐藏着当前互联网服务领域最炙手可热的两个技术方向:个性化推荐与智能匹配。作为一个长期观察推荐系统演进的从业者,我见… 2026/11/3 5:18:15
PIC18F86J10与MAX14431BAEE+的隔离SPI通信设计与调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:02:34
基于MAX14431与PIC18F47K42的隔离SPI通信设计实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:02:34
MAX14431与STM32F417ZG的SPI隔离通信链路设计与实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:02:34
DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:38:30
DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05
DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05
DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 1:38:30
DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05
DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/3 2:55:05