FMT

github

C++格式化字符串一直是个老大难,要么用系统API,要么用C库函数,要么自己写。最近std::format终于在C++20来了。。。cpp在一边不停加入新特性,实用的东西还是不少,比如cpp11的多线程支持,cpp17的filesystem等等,而网络库还不知道在哪。但是这些东西似乎来得太迟。cpp的现状却是很惨。其它语言很快崛起很大的原因就是基础库很全,你可以烂,可以不好用,但你不能没有啊。什么轮子都要自己造。吐槽完毕。

而vs2019仍然没有加入std::format支持,所以先自己用fmt::format。当然这个库可以编译成动态静态库,也可以header-only。

不想编译,我直接用它的header-only 先在项目属性的预处理器里加上FMT_HEADER_ONLY=1,把fmt的include加入附加包含目录然后在项目 加入如下头文件。如果使用库方式则不需要format.cc。但是需要链接相应的库。

参考:

spdlog

github

spdlog 是一个快速的 C++ 日志库,只包含头文件,兼容 C++11。

特性:

  • 非常快
  • 只包含头文件
  • 无需依赖第三方库
  • 支持跨平台 - Linux / Windows on 32/64 bits
  • 支持多线程
  • 可对日志文件进行循环输出
  • 可每日生成日志文件
  • 支持控制台日志输出
  • 可选的异步日志
  • 支持日志输出级别
  • 自定义日志格式

参考:

-C++日志库spdlog学习小结

JSON for Modern C++

github
manpage

nlohmann/json 是一个用于解析json的开源c++库,口碑一流,号称有业界最好的性能,并且使用非常方便直观,是很多c++程序员的首选。开源官网处有详细说明用法,但篇幅过长,不便于迅速阅读抓重点。而且,所举例的某些用法实践上其实比较少用到,而某些实践上常用到的一些用法,官网却缺例子。所以自己简要总结了一下它的主要用法,并加上自己写的示例,希望能给到新接触该库的朋友一些帮助。

参考: