这是我在知乎上回答的一个问题,不到两周收藏数超过 500,点赞还不到 100,看来 C++ 程序员还是不少,且大家都想进步。
不过从“收藏”就是“学过”的这种风气来看,大概率只是扫一眼,然后放到收藏里吃灰了。
下面是我在知乎上的回答。
Github 上有个 awesome-cpp,分门别类的列出了很多有用的库,当然里面包含了 C 库,你懂的,完全兼容。
我个人用的比较多的库有以下这些:
-
C++ Standard Library - C++ 标准库,C++ 标准的一部分,这个没什么可说的,基本上不可能不用。 -
cJSON - 这其实是个 C 库,简单封装下用起来还是很方便的,性能一般。 -
JsonCpp - C++ JSON 解析库,用法简单,性能也还好吧。 -
RapidJSON⚡ -国人写的 JSON 解析库,目前是性能最好 JSON 解析库,就是用起来有点复杂。 -
spdlog - 一个非常快的日志库,只需要包含头文件就可以使用,用起来比较方便,但是不能增量编译,会增加编译时间。 -
glog - Google 出品的日志库,这个其实用的不多哈 ,就是太有名了。 -
QuantLib- 一个开源的量化金融库,有很多金融工程上用到的函数。 -
TCMalloc- Google 出品的内存管理库。 -
ACE- 一个经典的用来教学的网络库,用了各种设计模式,被称为“学之者生,用之者死”,作者就是为了秀自己的设计模式用法,工作早期用过。 -
Boost.Asio⚡ - 准标准网络库,目前还没有入选标准库,网络库也是 C++ 的一个痛点,太多了,没有标准。 -
CppServer- 基于 asio 的一个网络库,支持 TCP, SSL, UDP, HTTP, HTTPS, WebSocket,作者是做交易系统的,我关注了这个作者,写了很多代码。 -
libcurl- 网络协议实现的瑞士军刀。 -
librdkafka- Kafka 客户端的 C 和 C++ 实现,作者已经到 Kafka 的商业支持公司 confluent 工作了,从那以后,代码更新速度明显加快,而且对 C++ 的支持更好了。其他语言的 Kafka 客户端库基本都是对该库的封装。 -
libwebsockets - C 语言实现的 WebSocket 库,支持 server 和 client。 -
Muduo- 陈硕编写的多线程网络库,只能用在 Linux 平台,他写了一本书,介绍 Linux 网络编程,影响了很多 C++ 程序员。 -
ZeroMQ- 一个高性能、异步网络通信库,原作者因病去世,有其他人在维护。在国内量化金融圈用的还是挺多的。 -
Libxml2- XML 解析库,是个 C 库。 -
yaml-cpp- YAML 解析器。
这是 awsome-cpp 列表:
每个类别下面都有链接和说明,其中不乏一些知名的库。
还有一些常用软件: