在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了 5.1 标准库 标准库中提供了C++程序的基本设施。虽然C++标准库随着C++标准折腾了许多年 (1) Dinkumware C++ Library 参考站点:http://www.dinkumware.com/ P.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设 (2) RogueWave Standard C++ Library 参考站点:http://www.roguewave.com/ 这个库在Borland C++ Builder的早期版本中曾经被采用,后来被其他的库给替 (3) SGI STL 参考站点:http://www.roguewave.com/ SGI公司的C++标准模版库。 (4) STLport SGI STL库的跨平台可移植版本。 5.2 “准”标准库 - Boost 参考站点:http://www.boost.org 国内镜像:http://www.c-view.org/tech/lib/boost/index.htm Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后 Boost中比较有名气的有这么几个库: Regex 正则表达式库 Spirit LL parser framework,用C++代码直接表达EBNF Graph 图组件和算法 Lambda 在调用的地方定义短小匿名的函数对象,很实用的functional功能 concept check 检查泛型编程中的concept Mpl 用模板实现的元编程框架 Thread 可移植的C++多线程库 Python 把C++类和函数映射到Python之中 Pool 内存池管理 smart_ptr 5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章: Smart Pointers in Boost,哦,这篇文章可以查到,CUJ是提供在线浏览的。 Boost总体来说是实用价值很高,质量很高的库。并且由于其对跨平台的强调, 5.3 GUI 在众多C++的库中,GUI部分的库算是比较繁荣,也比较引人注目的。在实际开 (1) MFC 大名鼎鼎的微软基础类库(Microsoft Foundation Class)。大凡学过VC++的 (2) QT 参考网站:http://www.trolltech.com/ Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给 (3) WxWindows 参考网站:http://www.wxwindows.org/ 跨平台的GUI库。因为其类层次极像MFC,所以有文章介绍从MFC到WxWindows的 (4) Fox 参考网站:http://www.fox-toolkit.org/ 开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应 (5) WTL 基于ATL的一个库。因为使用了大量ATL的轻量级手法,模板等技术,在代码尺 (6) GTK 参考网站:http://gtkmm.sourceforge.net/ GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。 5.4 网络通信 (1) ACE 参考网站:http://www.cs.wustl.edu/~schmidt/ACE.html C++库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive (2) StreamModule 参考网站:http://www.omnifarious.org/StrMod/ 设计用于简化编写分布式程序的库。尝试着使得编写处理异步行为的程序更容 (3) SimpleSocket 参考网站:http://home.hetnet.nl/~lcbokkers/simsock.htm 这个类库让编写基于socket的客户/服务器程序更加容易。 (4) A Stream Socket API for C++ 参考网站:http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.h 又一个对Socket的封装库。 5.5 XML (1) Xerces 参考网站:http://xml.apache.org/xerces-c/ Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API (2) XMLBooster 参考网站:http://www.xmlbooster.com/ 这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产 (3) Pull Parser 参考网站:http://www.extreme.indiana.edu/xgws/xsoap/xpp/ 这个库采用pull方法的parser。在每个SAX的parser底层都有一个pull的parse (4) Xalan 参考网站:http://xml.apache.org/xalan-c/ Xalan是一个用于把XML文档转换为HTML,纯文本或者其他XML类型文档的XSLT处 (5) CMarkup 参考网站:http://www.firstobject.com/xml.htm 这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。值得大家在D (6) libxml++ http://libxmlplusplus.sourceforge.net/ libxml++是对著名的libxml XML解析器的C++封装版本 5.6 科学计算 (1) Blitz++ 参考网站:http://www.oonumerics.org/blitz/ Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具 (2) POOMA 参考网站:http://www.codesourcery.com/pooma/pooma POOMA是一个免费的高性能的C++库,用于处理并行式科学计算。POOMA的面向对 (3) MTL 参考网站:http://www.osl.iu.edu/research/mtl/ Matrix Template Library(MTL)是一个高性能的泛型组件库,提供了各种格式 (4) CGAL 参考网站:www.cgal.org Computational Geometry Algorithms Library的目的是把在计算几何方面的大 5.7 游戏开发 (1) Audio/Video 3D C++ Programming Library 参考网站:http://www.galacticasoftware.com/products/av/ AV3D是一个跨平台,高性能的C++库。主要的特性是提供3D图形,声效支持(S (2) KlayGE 参考网站:http://home.g365.net/enginedev/ 国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平 (3) OGRE OGRE(面向对象的图形渲染引擎)是用C++开发的,使用灵活的面向对象3D引擎 5.8 线程 参考网站:http://threads.sourceforge.net/ 这个库的目标是给程序员提供易于使用的类,这些类被继承以提供在Linux环境 (2) ZThreads 参考网站:http://zthread.sourceforge.net/ 一个先进的面向对象,跨平台的C++线程和同步库。 5.9 序列化 (1) s11n 参考网站:http://s11n.net/ 一个基于STL的C++库,用于序列化POD,STL容器以及用户定义的类型。 (2) Simple XML Persistence Library 参考网站:http://sxp.sourceforge.net/ 这是一个把对象序列化为XML的轻量级的C++库。 5.10 字符串 (1) C++ Str Library 参考网站:http://www.utilitycode.com/str/ 操作字符串和字符的库,支持Windows和支持gcc的多种平台。提供高度优化的 (2) Common Text Transformation Library 参考网站:http://cttl.sourceforge.net/ 这是一个解析和修改STL字符串的库。CTTL substring类可以用来比较,插入, (3) GRETA 参考网站:http://research.microsoft.com/projects/greta/ 这是由微软研究院的研究人员开发的处理正则表达式的库。在小型匹配的情况 5.11 综合 (1) P::Classes 参考网站:http://pclasses.com/ 一个高度可移植的C++应用程序框架。当前关注类型和线程安全的signal/slot (2) ACDK - Artefaktur Component Development Kit 参考网站:http://acdk.sourceforge.net/ 这是一个平台无关的C++组件框架,类似于Java或者.NET中的框架(反射机制, (3) dlib C++ library 参考网站:http://www.cis.ohio-state.edu/~kingd/dlib/ 各种各样的类的一个综合。大整数,Socket,线程,GUI,容器类,以及浏览目 (4) Chilkat C++ Libraries 参考网站:http://www.chilkatsoft.com/cpp_libraries.asp 这是提供zip,e-mail,编码,S/MIME,XML等方面的库。 (5) C++ Portable Types Library (PTypes) 参考网站:http://www.melikyan.com/ptypes/ 这是STL的比较简单的替代品,以及可移植的多线程和网络库。 (6) LFC 参考网站:http://lfc.sourceforge.net/ 哦,这又是一个尝试提供一切的C++库 5.12 其他库 (1) Loki 参考网站:http://www.moderncppdesign.com/ 哦,你可能抱怨我早该和Boost一起介绍它,一个实验性质的库。作者在loki中 (2) ATL ATL(Active Template Library) 是一组小巧、高效、灵活的类,这些类为创建可互操作的COM组件提供了基本的 (3) FC++: The Functional C++ Library 这个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表 (4) FACT! 参考网站:http://www.kfa-juelich.de/zam/FACT/start/index.html 另外一个实现函数式语言特性的库 (5) Crypto++ 提供处理密码,消息验证,单向hash,公匙加密系统等功能的免费库。 还有很多非常激动人心或者是极其实用的C++库,限于我们的水平以及文章的篇 6,书籍 以前熊节先生曾撰文评论相对于Java程序设计语言,C++的好书多如牛毛。荣耀 http://www.royaloo.com/articles/articles_2003/9CppBooks.htm 下面几本书对于走在C++初学之路上的读者是我们最愿意推荐给大家的: (1) 《C++ Primer》 哦,也许你会抱怨我们为什么不先介绍TCPL,但对于走在学习之路上的入门者, (2) 《Essential C++》 如果说《C++ Primer》是C++领域的超级宝典,那么此书作为掌握C++的大局观 (3) 《The C++ Programming Language》 Bjarne为你带来的C++教程,真正能够告诉你怎么用才叫真正的C++的唯一一本 (4) 《Effective C++》,《More Effective C++》 是的,正如一些C++爱好者经常以读过与没有读过上述两本作品来区分你是否是 技术书籍仁者见仁,过多的评论反无太多意义,由读者喜好选择最适合自己的 -------------------------------------------------------------------------------- 7,资源网站 正如我们可以通过计算机历史上的重要人物了解计算机史的发展,C++相关人物 (2) Stanley B. Lippman (3) Scott Meyers (4) David Musser (5) Bruce Eckel (6) Nicolai M. Josuttis (7) Herb Sutter (8) Andrei Alexandrescu (9) 侯捷先生 (10) 孟岩先生 (11) 荣耀先生 (12) 潘爱民先生 除了上述大师的主页外,以下的综合类C++学习参考站点是我们非常愿意向大家 (1) CodeProject (2) CodeGuru (3) Dr. Dobb's Journal (4) C/C++ Users Journal (5) C维视点 (6) allaboutprogram (1) ISO IEC JTC1/SC22/WG21 - C++:标准C++的权威参考 (2) C++ FAQ LITE — Frequently Asked Questions: 最为全面的C++FAQ (1) .alt.comp.lang.learn.c-c++ (2) .comp.lang.c++.moderated (3) .comp.std.c++ -------------------------------------------------------------------------------- 8,不得不写的结束语 结束的时候也是总结现状,展望未来的时候。虽然C++从脱胎于C开始,一路艰 C++在面向企业的软件开发中,在开发便捷性等方面的确要比Java和C#差很多, 从C++目前的活跃程度,以及应用现状来说是完全能够肯定C++仍然是软件工业 需要看到的是两个趋势,一个趋势是C++变得更加复杂,更加学院派,通过模板 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1968669 |