{fmt}
{fmt}是一个开源的格式化库,用于替代C的stdio和C++的iostream。
特色:
- 简便的格式化API,提供本地化用的位置参数。
- 实现C++ 20 std::format
- 和python的format类似的格式化字符串语法
- 使用Dragonbox算法提供快速IEEE 754浮点数格式化和舍入,
- 可移植的Unicode支持
- 安全的printf实现,包括POSIX位置参数扩展。
- 可扩展:支持用户自定义类型
- 高效:比默认的标准库实现中的(s)printf、iostream、to_string和to_chars更快
- 源代码和编译后代码尺寸小
- 可靠:拥有广泛的测试并持续改进
- 容易使用:无外部依赖,MIT许可
- 可移植性:在不同平台上提供一致的输出结果,支持旧编译器
- 代码整洁,不会产生编译警告
- 默认与本地化环境(Locale)无关
- 通过FMT_HEADR_ONLY宏,可以作为header-only库使用
代码示例
打印到标准输出
格式化字符串
打印chrono时长
输出:
Default format: 42s 100ms
strftime-like format: 03:15:30
打印容器
输出:
[1, 2, 3]
在编译期检查格式化字符串
下面的代码在C++20中产生编译器错误,因为对字符串参数来说d是非法的格式符
输出到文件
运行速度是fprintf的5到9倍。
最后修改 July 6, 2023: update (eaffefbf)