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

2024-04-14 03:04

本文主要是介绍C++格式化输出开源库fmt入手教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

fmt项目快速上手指南

1. cmake环境配置

include(FetchContent)
FetchContent_Declare(fmtGIT_REPOSITORY https://github.com/fmtlib/fmtGIT_TAG 10.0.0GIT_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;
}

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

这篇关于C++格式化输出开源库fmt入手教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901913

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u

C++11中的包装器实战案例

《C++11中的包装器实战案例》本文给大家介绍C++11中的包装器实战案例,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录引言1.std::function1.1.什么是std::function1.2.核心用法1.2.1.包装普通函数1.2.

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js