赞
踩
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)
如果不是c++ 20,还想要简化字符串的格式化,和输入输出流的简化。那就可以使用我们今天要介绍的开源项目,fmt,
该项目的文档位于: fmt 官网文档
该项目代码开源与GitHub: fmt-gtihub
格式API在精神上与C print函数家族相似,但比通用标准库实现更安全、更简单且速度快好几倍。格式字符串语法类似于Python中str.form使用的语法。
该项目总体API比较简洁,通过下面的demo,就可以快速上手!
#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; }
实际输出结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。