C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。由于当今商业应用程序类型,已经从桌面应用迅速转移成Web应用。当Java横行天下以后,MS又忽然发力,搞出C#语言,有大片的曾经的C++程序员,觉得C++要就此沉沦,未料,这三年来,C++的生命力忽然被严重地加强了。主力缘由就是开源的软件、基础软件(好比并发原生支持,好比Android一定要推出原生的SDK)、各类跨平台应用的出现。java
开源C++库必须具备如下特色:必须是成熟的产品、跨平台的产品、相对通用的库。mysql
1、通用标准类程序员
iconv /iconvpp : (C形式的编码转换函数库,sql
2、XML解析库数据库
C++的XML相关库很多,可是大部分其实都是C库,使用起来天然不那么轻便。其中基于DOM的有TinyXml,基于SAX的固然是Xerces。前者小巧快捷,便于使用,适合作数据交换。后者则是全功能的XML解析器。编程
xerces-c :最强大的XML解析库了,不是仅仅在开源库里,你尽管把商业的算在内。固然,它的变体,被IBM拿去卖钱的那个版本,多了数百兆的东东来支持各国编码转换,是更强大,但我以为有小小的,开源的iconv在前不就够了?设计模式
xml相应的c开源库有expat,基于SAX,应用普遍。
3、数据库
4、多媒体类
相应的c开源库有ffmpeg、mpeg四、aac、avc、libmad、mpeg一、flac、ac三、ac三、matroska著名的多媒体播放器 TCPMP
5、网络开发类
ACE
除了ACE以外,还有不少系统和网络编程方面的程序库。好比在线程库方面,还有ZThread、boost::thread,若是放大到C/C++领域,还有APR,还有CII。在文件和目录操做方面,boost也有相应的组件,而在网络编程方面有socket++,还有boost::asio,将来的 C++0X中几乎确定有一个网络编程和一个线程库。然而目前看来,ACE仍然是进行系统和高性能网络编程的首选,其地位在一段时间内不会被撼动。它不可是一个实用的程序库、框架集,仍是一个典范的设计模式应用范例,很是值得学习。
6、GUI库
wxWidgets :使用wxWidgets ,开发者能够基于同一套代码,为Win32, Mac OS X, GTK+, X11, Motif, WinCE等平台开发应用程序。wxWidgets库能够被C++, Python, Perl, and C#/.NET等开发语言使用。跟其它有些一样支持跨平台GUI开发工具不一样,基于wxWidgets的应用,拥有真实本地化的视觉及使用效果——由于,wxWidgets使用(各)平台原生的控件,而不是简单经过贴图去模拟。wxWidgets是使用普遍的,自由的,开源的,成熟的。
QT-------------界面(GUI)开发,支持C++/Java/Python/...多种语言。跨平台。最主要的好处是,API很是优美!Qt自己也不只仅只是作GUI编程,实际它基本上能够作OS-API能够作的任何事情。象网络/数据库/OpenGL/...都提供完美的支持。
六. 计算机视觉
OpenCV,因特尔自主的开源库。支持C/C++/Python接口。这个感兴趣的朋友能够玩一下。若是结合OpenCV,你能够作一些外行人以为很酷的程序。好比说用它的人脸识别函数,来对你的摄像头进行处理,判断人的动做等
七. 图形图像处理
GDAL,处理大图像。 要是GIS专业的人确定会语言到很是大的tif影像,动则几个GB的航空影像。GDAL对大图像的读写支持是很是棒的(像多波段的图像均可以搞定)。 支持C++/Java/Python...
国外开源的GIS软件QGIS就是用了gdal
c的图形图像库较多,libjpeg、libpng、zlib、tiff、JBIG、最著名的开源形图像处理软件Cximage
8、内存管理:boost::smart_ptr,Hans-Boehm GC
九、密码及安全:OpenSSL
十、矩阵计算:MTL
十一、分布式对象中间件:ICE
十二、正则表达式:boost::regex
十三、配置管理:Lua随着软件系统愈来愈复杂,对软件的可配置型提出了愈来愈高的要求。传统上只要经过命令行参数来配置的系统,如今可能须要愈来愈多的方式和机制。目前愈来愈受欢迎、而且获得愈来愈多证明的作法,是将Lua嵌入到C/C++程序中,而用Lua程序做为配置脚本。这种作法的优点是,Lua语言强大灵活,能够适应复杂的配置要求。同时,Lua便于嵌入C/C++程序,并且编译执行速度很是快,能够说是目前解决C/C++程序配置管理问题的一个出色方案。