学过很多编程语言,其中的 C++ 语言特别难搞——
需要学习内容特别的多,总体投入的时间也是所有语言中最长的。结果,它却是最不容易出活的一门语言。
为什么?从根本上分析,就两个原因:
- C++ 语言太深
- C++ 标准库太窄
详细解读与本课程介绍,请观看视频——
本课程通过快速讲解(但决非蜻蜓点水)讲解108个精选的C/C++第三库,助力解决 C++ 程序员编写各类程序时发现 C++ 标准库不够用的困窘。
1. 已完成的库(定期更新)
人物关联仅供一乐,勿较真 :)
表:已完成库及关联人物解释
库 | 库功能 | 人物 | 关联说明 |
---|---|---|---|
fswatch | 文件监控 | 袁彬(明代锦衣卫) | 【监控】袁彬作为锦衣卫,职责是监视、侦查。fswatch 的核心功能是监控文件系统的变化。两者都体现了“密切关注变化”的核心概念。 |
libconv | 字符编码转换 | 仓颉(传说中的造字者) | 【符号解释】仓颉创造文字符号系统,解决信息记录和传递的根本问题;libiconv 在不同符号系统(字符编码)之间进行转换,解决信息在不同系统间交流的障碍。两者都处理“信息符号的基础”。 |
CLI11 | 命令行解析 | 怀恩(明代司礼监) | 【指令传递】怀恩作为皇帝近侍,负责传达圣旨。CLI11 负责精准传达程序用户(最高主人)通过命令行下达的指令。两者都扮演“传递权威指令”角色。 |
nlohmann/json | JSON 处理 | 张骞 (汉代丝绸之路开拓者) | 【信息交换桥梁】张骞开辟了东西方文化与商品交换的物理通道,JSON 是现代应用间进行结构化数据交换的通用语言;两者都象征着“打破壁垒,实现不同实体间结构化信息顺畅流通”。 |
libb64 | base64编码 | 摩尔斯(美国,电报摩斯码发明者) | 【以极简表达无穷】摩斯电码用两个符号编码无穷文字,base64 用 64 个字符编码无穷信息;两者都是解决“如何在特定限制条件下安全可靠地编解码信息”的经典方案。 |
libSnappy | 快速压缩 | 陈瑄 (明代漕运总督) | 【高效传输】为解决大明帝国北方战线的物资供给难题,陈瑄在军方制度森严的物流通道大胆接入民间渠道,看似草率,却极大降低中央行政负载,百倍解决大军粮草运输问题。libSnappy 看似压缩率不高,却极大减轻中央处理器的负载,于带宽和计算之间取得绝佳平衡,是系统化提升数据传输效率的典范。 |
spdlog | 日志记录 | 司马迁(西汉史官) | 【可靠记录】司马迁在极端情况下毕生撰史,留下宝贵史实,后人得以深刻理解中华帝国之运转;spdlog 同样负责在极端压力下,可靠记录软件系统极为复杂的运行信息。 |
2. 已纳入计划的库(序号非发布顺序)
- libfswatch:文件变动监控
- libiconv:字符集或编码转换
- CLI11:首选的现代 C++ 命令行解析器,原生支持与配置文件配合
- nlohmann/json:使用自然,开发高效的JSON编码处理库(github 榜一大哥)
- libb64:深入理解 base64 编码,轻松玩转 libb64 使用
- libSnappy:中庸而非平庸,来自 Google,适用面极大的压缩库
- spdlog : 首选的现代 C++ 的高性能日志库
- pystring - Python风格的字符串工具函数
- bzip2 - 文件压缩与解压
- rtmidi : midi 播放
- exiv2 : 获取照片元信息
- libzen 获取媒体文件元信息
- libSDL2/3: C语言 2D 游戏引擎:Simple DirectMedia Layer
- libSFML2/3: C++语言 2D 游戏引擎:Simple & Fast Multimedia Library
- fmt : 字符串格式化工具 (已部分进入 C++)
- libcurl: 老牌好用的,C语言网络客户端
- cpr: 人类该有的 C++ 网络请求器(客户端)
- CImg: 跨平台强大的C++图像处理库
- range-v3: 基于范围的算法,部分已进入 C++20新标
- robin-map : “劫富济贫”的哈希表
- fast-float: 高性能浮点数转换
- double-conversion: V8 也在用的数制转换器
- libfrozen : “冰冻” 的容器
- highway : C++ library for SIMD
- redis++ :C++ 的 Reids 客户端
- libsqlite3: SQLite3 客户端
- sqlite-orm : 基于 SQLite3 的ORM(对象-关系映射)
- OPENSSL:网络通信安全的守护人
- YAML-cpp:是的,又一个 “ML” 的 CPP 客户端
- TOM11 : 又又一个 ML,TOML的C++11 格式处理
- cereal : 现代 C++ 风格的系列化库
- tl-expected :简洁高效地处理预期失败
- inja : jinja 风格的 C++ 文本模板库
- http-parser : node.js 在用的 HTTP 报文解析器
- skarg-url : URL 解析器
- dlib:著名的机器学习库
- tiny-dnn:深度学习库
- sol2:在C++中调用lua
- cppcoro:一个C++协程库
- libmariadbclient: msyql/mariadb 数据库客户端C库
- meta.hpp:反射库
- cpp-terminal: C++终端组件库
- ftxui :又一个组件丰富的终端 UI 库
- wxWidgets 3:使用系统原生UI接口实现的跨平图形 UI 库
- stb-image:图像生成与处理库
- nana : C++ 轻量 GUI 库
- OpenCL:并行处理库
- utf8cpp : UNICODE 编码转换
- gflags:google 家的 C++ 命令行参数库
- crypto++ :加密算法库
- expresscpp :C++ 实现的 REST 网络 API 框架
- mosquitto: 物联网网络基础组件
- doctest:带文档功能的代码测试框架
- trompeloeil:c++ 单元测试 mock 库
- asio : 著名C++异步网络库