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++程序配置管理問題的一個出色方案。