
好的下面是对 C 的fmt库的介绍和基本使用。C 之fmt库介绍和使用 (1)fmt是一个开源的 C 格式化库旨在提供高效、类型安全、易用的文本格式化功能。它被设计为比 C 标准库中的iostream和printf更高效、更灵活。C20 标准库中的std::format就源自fmt库的设计。核心优势类型安全格式化参数的类型在编译时检查避免运行时错误。高性能相比iostream和printffmt通常有更优的性能。易用性语法简洁支持位置参数、命名参数等灵活配置。扩展性支持自定义类型的格式化输出。基础用法安装通过包管理器安装如 vcpkgvcpkg install fmt或从源码编译https://github.com/fmtlib/fmt基本格式化#include fmt/core.h int main() { int num 42; std::string text world; fmt::print(Hello, {}! The answer is {}., text, num); // 输出Hello, world! The answer is 42. return 0; }位置参数fmt::print({1} comes before {0}., B, A); // 输出A comes before B.数值格式化double pi 3.1415926535; fmt::print(Pi ≈ {:.2f}, pi); // 保留两位小数 // 输出Pi ≈ 3.14自定义类型格式化通过实现formatter特化struct Point { int x; int y; }; template struct fmt::formatterPoint { auto parse(format_parse_context ctx) { return ctx.begin(); } auto format(const Point p, format_context ctx) { return format_to(ctx.out(), ({}, {}), p.x, p.y); } }; int main() { Point p{10, 20}; fmt::print(Point: {}, p); // 输出Point: (10, 20) }与标准库对比功能printfiostreamfmt类型安全❌✅✅性能⭑⭑⭑⭑⭑⭑⭑⭑语法简洁性⭑⭑❌⭑⭑⭑⭑自定义扩展有限复杂简单总结fmt库提供了现代 C 中高效、安全的文本格式化方案尤其适合日志输出、字符串拼接等场景。在 C20 中其核心设计已被纳入标准库format但fmt仍提供更多扩展功能。后续教程将深入探讨编译时格式字符串检查高级数值格式化进制、对齐等性能优化技巧未完待续