fmt项目快速上手指南
1. cmake环境配置
include(FetchContent)
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt
GIT_TAG 10.0.0
GIT_SHALLOW TRUE)
# 1. 下载fmt库
FetchContent_MakeAvailable(fmt)
add_executable(fmt_guide main.cpp)
# 2. 链接fmt库
target_link_libraries(fmt_guide PRIVATE fmt::fmt)
2. 快速上手
- c++的文本可视化,与python相比,还是过于麻烦了。
- c++ 20标准则对此进行了改进, 实现了类似python的效果,大家具体可以参考: c++20 format官网文档
如果不是c++ 20,还想要简化字符串的格式化,和输入输出流的简化。那就可以使用我们今天要介绍的开源项目,fmt,
-
该项目的文档位于: fmt 官网文档
-
该项目代码开源与GitHub: fmt-gtihub
-
格式API在精神上与C print函数家族相似,但比通用标准库实现更安全、更简单且速度快好几倍。格式字符串语法类似于Python中str.form使用的语法。
-
该项目总体API比较简洁,通过下面的demo,就可以快速上手!
3. 使用dmeo
#include <fmt/color.h>
#include <fmt/core.h>
#include <fmt/os.h>
#include <fmt/ranges.h>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char const *argv[]) {
// 1. 格式化到字符串
std::string s = fmt::format("The answer is {}.\n", 42);
cout << s << endl;
// 2. 格式化输出
fmt::print("fuck you {} \n", "dd");
fmt::print(
"print vector: {} \n",
std::vector{1, 2, 3, 4,
5}); // 打印STL容器需要包含头文件 #include <fmt/ranges.h>
// 3. 带颜色输出
// 彩色输出需要包含该头文件 <fmt/color.h>
fmt::print(fg(fmt::color::green), "success\n");
fmt::print(fg(fmt::color::orange) | fmt::emphasis::underline, "warning\n");
fmt::print(fg(fmt::color::red) | fmt::emphasis::bold |
fmt::emphasis::underline,
"danger\n");
;
// 4. 输出到文件 需要包含头文件 #include <fmt/os.h>
auto fout = fmt::output_file("readme.txt");
fout.print("{} is an open-source formatting library providing a fast and "
"safe alternative to C stdio and C++ iostreams.\n",
"fmt");
return 0;
}
实际输出结果: