博大精深的C++, 各類庫, 總結(jié)的比較全, 載自 http://bbs.chinaunix.net/thread-1858444-1-1.html
這里收集一些著名的 C/C++ 開發(fā)庫、SDK、類庫、可復(fù)用類與結(jié)構(gòu)代碼 等信息,列舉它們的介紹、參考和網(wǎng)站鏈接,為各位 C/C++ 程序員和愛好者提供檢索和查閱類庫的方便。下面收集的 C/C++ 類庫介紹整理來源于文章:C++ 資源之不完全導(dǎo)引(作者:曾毅、陶文),這篇文章曾發(fā)表于 2004 年 5 月《CSDN 開發(fā)高手》。上文中介紹的類庫有些已經(jīng)多年未見發(fā)布和網(wǎng)站內(nèi)容的更新了,特別是一些開源的項目。我檢查了作者提供的 鏈接地址 和項目的 活躍程度,更改內(nèi)容上的偏差并補全了重要說明。另外,增加了自己使用和了解的 C/C++ 類庫的介紹。更新說明列表 (Last Update: 2011-02)目錄- C/C++ 標(biāo)準(zhǔn)庫與運行時庫 | C/C++ Standard & Runtime Library
- 模式復(fù)用與基礎(chǔ)功能 | Pattern Reuse & Basic Function
- 字符串處理 | String Handling
- 應(yīng)用框架與圖形用戶界面 | Application Framework & GUI
- 通用功能 | General Function
- 線程 | Threads
- 科學(xué)與并行計算 | Scientific & Parallel Computation
- 網(wǎng)絡(luò)功能 | Network Communication
- XML 功能 | XML Functions
- 持久存儲 | Persistence & Storage
- 加解密 | Cryptographic
- 日志 | Logging
- 函數(shù)式編程 | Functional Programming
- 雜項 | MISC
------------------------------------------- C/C++ 標(biāo)準(zhǔn)庫與運行時庫 | C/C++ Standard & Runtime Library
實現(xiàn) ISO 的 C/C++ 語言規(guī)格標(biāo)準(zhǔn)中要求的標(biāo)準(zhǔn)庫,每個組織或廠家的實現(xiàn)均有差異。在鏈接的二進制庫中通常還伴隨實現(xiàn)了平臺特定的基礎(chǔ)運行時庫,例如 POSIX 標(biāo)準(zhǔn)。ISO C/C++/POSIX 的標(biāo)準(zhǔn)如下:Microsoft C Run-Time Libraries & Standard C++ Library微軟的這一套運行時庫,在功能和鏈接庫上分為 3 個部分:Run-Time Libraries (CRT)、Standard C++ Library、CRT for Managed Code,分別對應(yīng)的動態(tài)鏈接庫為:msvcr[ver].dll、msvcp[ver].dll、msvcm[ver].dll。VC8、VC9 采用了 Side-by-Side (WinSxS, Manifest) 方式部署 CRT 庫,但在 VC10 中又去掉了 Side-by-Side 的部署方式。在 %SystemRoot%\system32 中有一個隨 Windows 發(fā)布的 Known DLL:msvcrt.dll;而帶版本號 [ver] 的庫在 VC 或 VC Redistributable Package 中發(fā)布。VC7 之后在 namespace stdext 中提供 hash_map、hash_set 兩個擴展標(biāo)準(zhǔn)的容器模板。GNU C/C++ Library通常稱為 GNU libc 和 libstdc++,是 GNU 的 C/C++ 標(biāo)準(zhǔn)庫和運行時庫的實現(xiàn),在各種 Linux 發(fā)行版中都會安裝該庫,也是很多開源 C/C++ 程序選擇的基礎(chǔ)庫。另外 libc 和 libstdc++ 也被移植到各種平臺下,如 Windows 下的 MinGW 和 Cygwin 就包含 libc 和 libstdc++:MinGWMinGW: Minimalist GNU for Windows,在 Windows 平臺提供一套 GNU 的開發(fā)環(huán)境,包括工具和開發(fā)庫。MinGW 中包括對 GCC 和 GNU libc、libstdc++ 的 Windows 移植。Cygwin發(fā)源于 RedHat 的 Cygwin 項目,目標(biāo)在于在 Windows 下建立一套 Unix/Linux 環(huán)境,包括 X Window 這種 Linux GUI 基礎(chǔ)庫在內(nèi),所以又叫 Cygwin/X。Cygwin 實現(xiàn)的重點是 cygwin1.dll,它向其它 Cygwin 程序提供 POSIX 接口,并在內(nèi)部轉(zhuǎn)換成 Windows API 調(diào)用。Cygwin 中包括對 GCC 和 GNU libc、libstdc++ 的 Windows 移植。Tiny C Runtime Library一個小巧的 Windows 平臺 CRT 庫實現(xiàn),可用來替換對 Microsoft CRT 庫的鏈接,達到精簡依賴的基礎(chǔ)庫、減小最終發(fā)布程序大小的作用。SGI STLSGI 公司的 C++ 標(biāo)準(zhǔn)模版庫。STLportSGI STL 庫的跨平臺可移植版本。Dinkumware C++ LibraryP.J. Plauger 編寫的高品質(zhì)的標(biāo)準(zhǔn)庫。P.J. Plauger 博士是 Dr. Dobb's 程序設(shè)計杰出獎的獲得者。其編寫的庫長期被 Microsoft 采用,并且 Borland 也取得了其 OEM 的 license,在其 C/C++ 的產(chǎn)品中采用 Dinkumware 的庫。RogueWave Standard C++ Library這個庫在 Borland C++ Builder 的早期版本中曾經(jīng)被采用,后來被其它的庫給替換了。不推薦使用。模式復(fù)用與基礎(chǔ)功能 | Pattern Reuse & Basic Function
其實這個分類的界限很難確定,原因是有一些 C/C++ 庫提供各種各樣的模式形式,在功能上也包羅萬象,并不專一,屬于綜合性功能。但在目標(biāo)上這些庫都是一致的:加強 C/C++ 語言的功能、復(fù)用度,提供穩(wěn)定的基礎(chǔ)功能。什么是基礎(chǔ)功能?應(yīng)該是那些不依賴于平臺,每個應(yīng)用可能都會用到的功能,例如:字符串、通用算法和容器等。BoostBoost 是高質(zhì)量、可移植、開放源代碼的 C++ 庫,作為標(biāo)準(zhǔn)庫的后備,是 C++ 標(biāo)準(zhǔn)化進程之一。Boost 庫由 C++ 標(biāo)準(zhǔn)委員會庫工作組成員發(fā)起,在 C++ 社區(qū)中影響甚大。Boost 庫為我們帶來了最新、最酷、最實用的技術(shù),是不折不扣的“準(zhǔn)標(biāo)準(zhǔn)庫”。Boost 不是一個庫,而是一組庫,每一個 Boost 庫都是一個相對獨立的功能(通常在一個子目錄下發(fā)布),可以獨立鏈接和使用,一般稱 Boost 中的 xxx 庫為 Boost.xxx。有些 Boost 庫根本不用編譯成二進制的靜態(tài)或動態(tài)鏈接庫形式,只要在應(yīng)用它的源碼中 include 包含它的頭文件就可以直接使用,稱為 Header-Only 庫,如 Boost.Lambda。Boost 由于其對跨平臺的強調(diào),對標(biāo)準(zhǔn) C++ 的強調(diào),是編寫平臺無關(guān),現(xiàn)代 C++ 的開發(fā)者必備的工具。但是 Boost 中也有很多是實驗性質(zhì)的東西,在實際的開發(fā)中實用需要謹(jǐn)慎。并且很多 Boost 中的庫功能堪稱對語言功能的擴展,其構(gòu)造用盡精巧的手法,不要貿(mào)然的花費時間研讀。Boost 另外一面,比如 Graph 這樣的庫則是具有工業(yè)強度,結(jié)構(gòu)良好,非常值得研讀的精品代碼,并且也可以放心的在產(chǎn)品代碼中多多利用。另外,Boost 的官方文檔也是相當(dāng)漂亮的,講述的清晰明了:從 概念 到 示例都有,在開源庫中是不可多得的。除了 Boost 發(fā)布包中包括的庫之外,還有一些庫處于提交待審成為 Boost 庫的狀態(tài) (Proposal),或處于尚在測試和評審階段 (TR),Boost 發(fā)布包中未將這些庫包含進來,可以從這些庫的專項地址下載,例如用于日志的 Boost.Log 庫。列舉 Boost 中的幾個庫:LokiLoki 的作者就是大名頂頂?shù)?Andrei Alexandrescu,"Modern C++ Design"(《C++ 設(shè)計新思維》)一書的作者,Boost 和 C++0x 的推動者之一。Loki 早期是 "Modern C++ Design" 一書的附帶類庫,是實驗和教學(xué)性質(zhì)的庫。但隨著作者的維護、更新和改進,Loki 現(xiàn)在已經(jīng)在復(fù)用性和穩(wěn)定性上已逐漸成熟了。Loki 中把 C++ 模板的功能發(fā)揮到了極致。嘗試把類似 設(shè)計模式 這樣思想層面的東西通過庫來提供。同時還提供了智能指針這樣比較實用的功能。stlsoftstlsoft 從名字都可以知道是 STL 的擴展功能庫,這一點和 Boost 的定位很像。stlsoft 的作者是 Matthew Wilson,stlsoft 也有配套的書籍 "Extended STL" 共兩卷:Extended STL, Volume 1: Collections and IteratorsExtended STL, volume 2: Adaptors, Algorithms, Allocators, Functions, Ranges and Viewsstlsoft 包含一些基本的通用功能,例如字符串處理 (stlsoft/string/),當(dāng)然這是基于 std::basic_string 的處理。stlsoft 最吸引人的地方是:免費 和 全部的功能都是 Header-Only 的,使用時只要包含頭文件即可。字符串處理 | String Handling
通用的字符串處理功能,可以劃分到 模式復(fù)用與基礎(chǔ)功能 | Pattern Reuse & Basic Function 類別中,但為了查閱方便,還是把它分離出來了。包括:字符串的類包裹對象、格式化字符串、Tokenizer、分詞、正則表達式處理 等。當(dāng)然 C/C++ 的標(biāo)準(zhǔn)庫,以及很多應(yīng)用框架和 GUI 庫中,也都有字符串處理相關(guān)的功能實現(xiàn)(如:strtok()、std::basic_string、std::basic_stringstream、 ATL/MFC 的 CStringT 等),這里就不再列出這些功能了,有需要可以參考 MSDN Library 和 www.cppreference.com、www.cplusplus.com 等一些 C/C++ 參考網(wǎng)站。Boost 中的字符串處理相關(guān)庫上面說了 Boost 是一套包羅萬象的通用功能 C++ 庫,下面列出一些 Boost 中的和字符串處理相關(guān)的庫:
Boost String Algorithms Library:Boost 字符串算法庫,功能大多在頭文件 boost/algorithm/string.hpp 中集中聲明,并在 boost/algorithm/string/ 下有分別功能的定義,在名字空間 boost::algorithm 中。這個 Boost 字符串算法庫通常和標(biāo)準(zhǔn)庫的字符串實現(xiàn) std::basic_string 聯(lián)用,作為標(biāo)準(zhǔn)庫字符串功能的擴展,例如可以做 tokenize 的算法 boost::algorithm::split() 或類 boost::algorithm::split_iterator, boost::algorithm::token_finder。
Boost.Tokenizer:Boost 專門提供的字符串 tokenize 分詞庫,在 boost/tokenizer.hpp 中聲明,和它相關(guān)的還有 分詞迭代器 (boost\token_iterator.hpp) 和 分詞工具類 (boost\token_functions.hpp)。
Boost.Regex:上面已提到了,這是 Boost 的正則表達式功能實現(xiàn)。
另外 Boost 中還有 lexical_cast(數(shù)值/字符串轉(zhuǎn)換)、Format(類似 printf() 的格式化)、Spirit(EBNF 解析)等和字符串/文本處理有關(guān)的庫。Common Text Transformation Library:http://cttl.sourceforge.net/,基于標(biāo)準(zhǔn)庫 std::basic_string 的字符串處理擴展功能,有 EBNF 解析功能。GRETA:http://research.microsoft.com/,微軟 Research 的正則表達式模板庫項目(已停止維護),支持 Perl 兼容的正則表達式處理。應(yīng)用框架與圖形用戶界面 | Application Framework & GUI
通用的應(yīng)用程序開發(fā)框架庫,通常以 GUI 為其重要的組成部分,但絕不止于 GUI,功能上小到 字符串,中到 網(wǎng)絡(luò)通信,大到 層次架構(gòu)都有可能支持。并且應(yīng)用框架庫不只是庫的復(fù)用,而可能會引導(dǎo)程序員的程序架構(gòu)設(shè)計,例如 MVC 架構(gòu)。一般情況下足以單獨依靠 某一個應(yīng)用框架庫來完成程序的開發(fā)。通常可以永葆活力的應(yīng)用框架庫背后都是有實力的組織或公司,穩(wěn)定性比一般的庫要強。MFCMFC (Microsoft Foundation Class) 微軟基礎(chǔ)類庫,構(gòu)建于 Windows API 之上,提供 OO 的接口風(fēng)格。在 .Net Framework 成名前,MFC 是 Windows 平臺開發(fā)程序主框架的首選,現(xiàn)在由 .Net Framework 接過這個任務(wù)。ATL/WTLATL (Active Template Library) 是一組輕量級、高效的模板類,提供 GP 的接口風(fēng)格,這些類為創(chuàng)建 COM 組件提供了基本的功能。有一部分類和代碼在 ATL 和 MFC 之間是共享的 (ATL/MFC Shared Classes),例如 實現(xiàn) CString 的 CStringT 模板。WTL 是基于 ATL 的一個庫。使用了大量 ATL 的輕量級手法、模板等技術(shù),在代碼尺寸,以及速度優(yōu)化方面做得非常到位。主要應(yīng)用目標(biāo)是 COM 輕量級網(wǎng)絡(luò)下載的可視化控件 (ActiveX)。不過微軟的商業(yè)策略,包括 MFC 和風(fēng)頭上的 .Net Framework,WTL 早就被微軟冷落了,最近的官方版本是 2007 年發(fā)布的 WTL 8.0,不過在 Sourceforge 的 WTL 項目中,于 2009 年發(fā)布了 WTL 8.1。wxWidgets由社區(qū)維護的開源跨平臺 C++ 通用程序框架和 GUI 類庫。wxWidgets 原來也叫 wxWindows,但由于微軟的緣故更名為 wxWidgets。wxWidgets 的層次結(jié)構(gòu)類似 MFC,熟悉 MFC 的人可以很快上手 wxWidgets。wxWidgets 使用基于運行平臺的 Native API 實現(xiàn),對于 Windows 來說就是 Windows API,對于 Linux 則可能是 GTK+ 或 X11。除了 C++ 作為開發(fā)接口語言外,wxWidgets 最著名的其它語言封裝接口是 Python 的封裝接口:wxPythonwxWidgets 項目的活躍程度和更新、維護一直都很穩(wěn)定,是值得長久信賴的通用程序框架和 GUI 類庫。GTK+/gtkmmGTK+ (GIMP Toolkit) 是一個采用面向?qū)ο笤O(shè)計的使用 C 語言開發(fā)的 GUI 窗口開發(fā)庫。最早作為 GIMP 繪圖工具的基礎(chǔ)庫而開發(fā)。GTK+ 是 GNOME 桌面環(huán)境的基礎(chǔ)庫。gtkmm 是 GTK+ 的 C++ 語言封裝。Qt本帖最后由 breakerzhao 于 2012-09-13 15:43 編輯
通用功能 | General Function
這些庫是包含了多種功能的綜合性開發(fā)庫、類庫,一般目標(biāo)是提供可移植的基礎(chǔ)設(shè)施服務(wù),例如 線程、網(wǎng)絡(luò)功能 等。 P::Classes 活躍程度:2004-03 發(fā)布版本 1.0.0 beta1,2005-01 網(wǎng)站最近消息貼出 "We are not dead!" [2010-11 checked] 一個高度可移植的 C++ 應(yīng)用程序框架。當(dāng)前關(guān)注類型和線程安全的 Signal/Slot 機制,I/O 系統(tǒng)包括基于插件的網(wǎng)絡(luò)協(xié)議透明的 I/O 架構(gòu),基于插件的應(yīng)用程序消息日志框架,訪問 SQL 數(shù)據(jù)庫的類等。 ACDK 活躍程度:2006-03 公告 CVS 版下載 ACDK 5 a2 [2010-11 checked] ACDK (Artefaktur Component Development Kit) 是一個平臺無關(guān)的 C++ 組件框架,目標(biāo)是實現(xiàn)類似于 Java 或者 .NET 中的框架,涉及的方面有:反射機制、線程、Unicode、廢料收集、正則表達式、I/O、網(wǎng)絡(luò)、SSL、SQL、實用工具、XML 等。還包括對 Java、Perl、Python、TCL、Lisp、COM 和 CORBA 的集成。 dlib C++ library 活躍程度:2010-11 發(fā)布版本 17.32 [2010-11 checked] 提供多種功能的跨平臺綜合庫。涉及的方面有:數(shù)值計算 (Matrix)、網(wǎng)絡(luò)功能 (Socket, streambuf, HTTP server)、線程、GUI、機器學(xué)習(xí)、圖像處理(BMP 位圖)、數(shù)據(jù)壓縮與摘要、日志、單元測試框架、命令行解析、XML 解析、容器、序列化、BASE64 編解碼、內(nèi)存池管理 等。 Chilkat C++ Libraries 活躍程度:2010-07 發(fā)布 VC6-VC10 編譯版本 9.1.0 [2010-11 checked] 提供一組庫,包括:Zip、Mail、IMAP、加解密、MHT、XML、字符集、MIME、PFX、FTP 等。 PTypes 活躍程度:2007-06 發(fā)布版本 2.1.1 [2010-11 checked] 可以作為 STL 的簡單替代品,提供可移植的線程(同步對象)和網(wǎng)絡(luò)(Socket 和 命名管道)支持,也包括字符串、變體 (variant)、字符集、鏈表 等基礎(chǔ)類型的實現(xiàn)。主要應(yīng)用目標(biāo)是的網(wǎng)絡(luò)服務(wù)程序 和 robots 等。 LFC 活躍程度:2002-06 發(fā)布版本 0.5 [2010-11 checked] 一個提供通用目標(biāo)的 C++ 類庫、框架,涉及的方面有:通用數(shù)據(jù)結(jié)構(gòu)、通用算法、文件、Socket、線程、GUI、數(shù)據(jù)庫訪問、通用設(shè)計模式、數(shù)據(jù)流、RTTI、持久化、多媒體(包括游戲開發(fā)與 3D 圖形)、通用網(wǎng)絡(luò)協(xié)議 (HTTP, FTP)、正則表達式 等。
線程 | Threads
pthreads 由 POSIX 定義的線程實現(xiàn)規(guī)范 POSIX threads,C 語言的 API,在各種 Unix/Linux 和 Windows 下都有支持,是一套移植性很好的通用線程庫。 C++ Threads 活躍程度:2003-10 發(fā)布版本 3.6 [2010-11 checked] C++ 封裝的線程類,用于 Linux 開發(fā)的多線程支持。 ZThreads 活躍程度:2005-03 發(fā)布版本 2.3.2 [2010-11 checked] 一個跨平臺,面向?qū)ο笤O(shè)計的線程和同步事務(wù)庫。在 POSIX 和 Windows 下經(jīng)過測試。
科學(xué)與并行計算 | Scientific & Parallel Computation
這個一開始可以分為兩類:關(guān)于 數(shù)值計算 (Numeric Computation) 和 并行計算 的庫,但是有相當(dāng)一部分庫同時涵蓋這兩種功能,并且現(xiàn)代的用于數(shù)學(xué)計算的程序越來越依靠并行處理來提升性能,所以就歸到了一類。 Blitz++ Blitz++ 是一個高效的數(shù)值計算函數(shù)庫,它的目的是建立一套具有 C++ 方便接口,同時又比 Fortran 速度更快的數(shù)值計算環(huán)境。通常,用 C++ 所寫出的數(shù)值程序,比 Fortran 慢 20% 左右,因此 Blitz++ 正是要改掉這個差距。方法是利用 C++ 的 template 技術(shù),程序執(zhí)行甚至可以比 Fortran 更快。 CGAL CGAL (Computational Geometry Algorithms Library) 是高效幾何計算方面的 C++ 類庫,CGAL 也有 Python 和 Matlab 的 API 接口。CGAL 應(yīng)用的領(lǐng)域有:圖形學(xué)、可視化、輔助設(shè)計與建模、GIS 等。 POOMA POOMA (Parallel Object-Oriented Methods and Applications) 原先是由 Los Alamos National Laboratory (LANL) 開發(fā)的用于并行計算的 C++ 類庫。 POOMA 提供近似于數(shù)學(xué)語法的高層語法,來簡化算法的編程,并且自動處理多處理器之間的通信事務(wù)。POOMA 被用于物理模型的計算,例如:粒子物理計算。 FreePOOMA 是 POOMA 的繼續(xù)項目,原先的 POOMA 已經(jīng)很少維護了。 MTL MTL (Matrix Template Library) 提供 矩陣 和 線性代數(shù) 計算的功能,是一個基于模板泛型設(shè)計,以高性能計算 (HPC: High-performance computing) 為目標(biāo)的類庫。 MTL 有 2 個版本:MTL4 和 MTL2,MTL4 是 2005 后重寫的庫。 OpenMP OpenMP 不是一套復(fù)用目的的開發(fā)庫,而是一組用于共享內(nèi)存并行系統(tǒng)的多線程程序的一套指導(dǎo)規(guī)范,它由編譯和運行環(huán)境支持,最新的 GCC、ICC、VC 都對 OpenMP 有所支持。OpenMP 規(guī)范支持的語言包括 C、C++ 和 Fortran。開發(fā)時,在源碼中使用編譯指示 (directive, #pragma) 指導(dǎo)編譯器并行化,編譯器自動將程序并行化,并在必要之處加入同步互斥語義。 Intel Compilers and Libraries 本來不想把 Intel Compilers and Libraries 放到這一類的,因為這個軟件包含了除 開發(fā)庫 外的編譯和其它工具,但是由于使用此軟件包能夠在 Intel 平臺下開發(fā)和生成出色性能的程序,以及對并行計算的強力支持,還是把它列出來了。這個軟件包以及從 ICC 編譯器增大到包括 VTune、Amplifier、Inspector、MKL (Math Kernel Library) 等各種性能工具和庫的開發(fā)套件,是開發(fā) Intel 平臺高性能、并發(fā)程序的強力工具。
網(wǎng)絡(luò)功能 | Network Communication
很多通用庫和應(yīng)用框架庫,如 Boost.Asio,都有網(wǎng)絡(luò)通信功能、異步網(wǎng)絡(luò) I/O 功能 (AIO) 或 Socket 封裝庫,這里只列出以 網(wǎng)絡(luò)通信功能 為主要目的的開發(fā)庫。 ACE ACE Home:從這里開始了解 ACE,同時也是 ACE 之父 Schmidt 的主頁。 ACE Repository:Schmidt 是 Vanderbilt 大學(xué)的教授,ACE 的源碼可以從 Vanderbilt 大學(xué)的 SVN 倉庫中下載。 ACE Docs:ACE 的 Doxygen 參考文檔。
ACE (Adaptive Communication Environment) 中文翻譯為 自適應(yīng)通訊環(huán)境,由 Douglas Schmidt 發(fā)起,后來有其它人員參與。 ACE 是一套重量級的 C++ 網(wǎng)絡(luò)功能庫,它的特點是使用很多面向?qū)ο蟮脑O(shè)計模式來實現(xiàn)網(wǎng)絡(luò)功能,并且有很好的跨平臺能力。ACE 的框架中實現(xiàn)了很多概念,諸如:事件多路分離和事件處理器分派、信號處理、服務(wù)初始化、進程間通信、共享內(nèi)存管理、消息路由、分布式服務(wù)動態(tài)配置、并發(fā)執(zhí)行和同步 等。 因為 ACE 的模式眾多,所以使用者在清晰理解其概念的情況下,才會發(fā)揮 ACE 的效能。關(guān)于 ACE 的評價和學(xué)習(xí)步驟、資料,可以參考《學(xué)之者生,用之者死:ACE 歷史與簡評》(陳碩)。 A Stream Socket API for C++:http://www.pcs.cnu.edu/,Socket 封裝。 A simple IOCP Server/Client Class:http://www.codeproject.com/,Windows Socket + IOCP 完成端口機制封裝。在 Windows 下稍加更改可以讓這個變成符合自己需要的小巧而高效的網(wǎng)絡(luò)處理類。配文講解的中文翻譯在 vckbase。
XML 功能 | XML Functions
XML 是現(xiàn)代通用的數(shù)據(jù)保存格式,因為它的通用性和格式良好定義,被經(jīng)常用在 數(shù)據(jù)存儲、數(shù)據(jù)交換 和 接口說明 等功能中。先列舉一些 XML 解析器 (XML Parser): TinyXML:http://www.grinninglizard.com/tinyxml/,一個輕量級的 XML Parser. MSXML 微軟的 XML Parser,全稱 Microsoft Core XML Services,采用 COM 的接口操作形式,提供 DOM 和 SAX2 API、XML Schema (XSD)、XPath、XSLT 功能。 xml4c:http://www.alphaworks.ibm.com/tech/xml4c,IBM 的重量級 XML Parser,C++ 實現(xiàn),支持 100 多種字符編碼。 Xerces:http://xml.apache.org/xerces-c,Apache 的 XML Parser,支持少數(shù)的字符編碼,如 ASCII、UTF-8、UTF-16 等,功能包括驗證 DTD、SAX 和 DOM API 等。 libxml++:http://libxmlplusplus.sourceforge.net/,對的 libxml (The XML C parser and toolkit of Gnome) 解析器的 C++ 封裝。 XMLBooster:http://www.xmlbooster.com/,使用 DOM 和 SAX 兩大主流 XML 解析辦法之外的解析器。 下面列舉一些 XML 的功能庫: Xalan:http://xml.apache.org/xalan-c/,Xalan 可以將 XML 文檔轉(zhuǎn)換為 HTML、純文本或者其它 XML 類型文檔。 gSOAP:http://gsoap2.sourceforge.net/,SOAP/Web Services 的一個 C++ 開源實現(xiàn)。 SOAP/Web Services in ATL Server ATL Server Reference in MSDN (VS :微軟對 ATL Server 庫的支持降低了,在 MSDN Library 中,最后一個有 ATL Server 參考的版本是 VS8。因為現(xiàn)在微軟主推的 .Net 框架中已包含 HTTP 和 SOAP 等 Web 功能(WCF 等)。 ATL Server Library and Tools in CodePlex:ATL Server 現(xiàn)在在 CodePlex 上托管和維護,可以在這里得到 ATL Server 最新的消息。
這是微軟的 SOAP/Web Services 功能。原先微軟有一個 SOAP Toolkit 的庫,實現(xiàn) SOAP/Web Services 功能,但后來被廢棄了,并移入了 .Net 框架中。所以要使用本地代碼 C/C++ 實現(xiàn)的 SOAP,就要使用 ATL Server 庫中的 SOAP/Web Services 功能。ATL Server 庫除了 SOAP 之外還提供其它 Web 功能,例如 HTTP 實現(xiàn)。 eXist:http://exist.sourceforge.net/,持續(xù)化 XML 存儲,XML 數(shù)據(jù)庫。 Simple XML Persistence Library (SXP):http://sxp.sourceforge.net/,將對象序列化為 XML 的輕量級的 C++ 庫,用于持久存儲。
持久存儲 | Persistence & Storage
通常 持久存儲 表示的概念包括:(1) 將類型(POD 類型、類對象、容器)序列化為二進制數(shù)據(jù)。(2) 提供基于文件/流的操作。(3) 提供基于數(shù)據(jù)庫的操作。對于 (3) 各數(shù)據(jù)庫管理軟件 (DBMS) 大多都提供自己的 C/C++ API,在 Windows 下更有 ODBC、OLE/DB 這種中間適配層提供統(tǒng)一的操作接口。下面只列出一些輕量級、開源的持久化功能。 s11n:http://s11n.net/,一個基于 STL 的 C++ 庫,用于序列化 POD 類型、STL 容器以及用戶定義類型。 MySQL Connector/C++:MySQL 5.1 Connector/C++ 參考,MySQL 數(shù)據(jù)庫客戶端操作的 C++ API。默認(rèn)發(fā)布的 MySQL 安裝包中包含其 C 語言的 API (MySQL Connector/C)。 SQLite:http://www.sqlite.org/,輕量級的 SQL DBMS,沒有 SQL 的服務(wù)器端,單純基于文件存儲。提供 API 支持,使用戶執(zhí)行 SQL 語句來查詢/操縱數(shù)據(jù),F(xiàn)irefox 3 就使用 SQLite 保存其配置數(shù)據(jù)。
加解密 | Cryptographic
Crypto++:Crypto++ Sourceforge Project, http://www.cryptopp.com/。C++ 封裝的加解密算法庫。Crypto++ 是各種算法的合集,包括對稱密碼、非對稱密碼、摘要算法。 OpenSSL:http://www.openssl.org/。C API 的加解密算法庫,以及 SSL 協(xié)議實現(xiàn)。OpenSSL 不只是加解密算法庫,還包含網(wǎng)絡(luò)功能(包括未使用和使用加密通道 SSL)和實用工具。
日志 | Logging
Log for C++ (Log4cpp) Log4cpp 主要用于 C++ 程序中寫日志,有著較強的跨平臺移植能力。除了日志功能外,Log4cpp 中包括很多可移植的基礎(chǔ)功能,例如:同步功能 (Condition, CriticalSection, Event, Mutex, Semaphore)、網(wǎng)絡(luò)功能 (Socket, ServerSocket, DatagramSocket, SocketInputStream, SocketOutputStream)、文件監(jiān)控 (FileWatchdog)、智能指針 (ObjectPtrT)、字符串處理 (StrictMath, StringHelper, StringTokenizer)、線程支持 等。 Boost.Log:http://sourceforge.net/projects/boost-log/,用于日志記錄的 Boost 庫,目前沒有放入 Boost 發(fā)布包中。 log4cxx:http://logging.apache.org/log4cxx/,Apache 出的日志功能庫。 glog:http://code.google.com/p/google-glog/ Log4cplus:http://log4cplus.sourceforge.net/ Logging In C++:http://www.drdobbs.com/,這是 DrDobbs 上的一篇文章,教你怎么寫出一個 C++ Logging 功能類。
函數(shù)式編程 | Functional Programming
Boost.Lambda:Boost.Lambda 是 Boost 提供的函數(shù)式編程特性。 The Functional C++ Library (FC++):http://www.cc.gatech.edu/,用模板庫來實現(xiàn) C++ 的函數(shù)式編程。 FACT!:http://www.fz-juelich.de/,另一個實現(xiàn) C++ 函數(shù)式編程的模板庫。
雜項 | MISC
CppUnit:CppUnit Sourceforge Project,一個 C++ 的單元測試框架,由 JUnit 移植而來,使用派生測試類的方式產(chǎn)生測試用例。 |
Qt 原來是 Trolltech 公司的一個跨平臺的 C++ GUI 框架,后來被 Nokia 收購成為其一個子部門。Qt 是另一個著名桌面環(huán)境 KDE 的基礎(chǔ)庫。和 GTK+ 不同,Qt 一開始就選擇 C++ 作為實現(xiàn)其完全面向?qū)ο罂蚣艿拈_發(fā)語言。
posted on 2013-04-16 21:03
Richard Wei 閱讀(1074)
評論(0) 編輯 收藏 引用