C++格式化输出开源库fmt入手教程

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;
}

实际输出结果:
在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早睡的叶子

你的鼓励就是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值