Boost庫是一個可移植、提供源代碼的C++庫,作為标準庫的後備,是C++标準化程序的發動機之一。 Boost庫由C++标準委員會庫工作組成員發起,其中有些内容有望成為下一代C++标準庫内容。在C++社群中影響甚大,是不折不扣的“準”标準庫。 Boost由于其對跨平台的強調,對标準C++的強調,與編寫平台無關。大部分boost庫功能的使用隻需包括相應頭檔案即可,少數(如正規表達式庫,檔案系統庫等)需要連結庫。但Boost中也有很多是實驗性質的東西,在實際的開發中實用需要謹慎。boost 在一些播放軟體和音效中指增強,比如Bass Boost,低音增強。
2.解壓到硬碟上,其目錄構造為
boost_1_46_1/ ................................boost根目錄
index.htm ..................... www.boost.org 網站首頁
boost/ ..............................所有的Boost頭檔案
lib/ .................................預編譯的二進制庫
libs/ ......................庫的Tests, .cpps, docs等等
index.html .............................庫文檔開始處
algorithm/
any/
array/
…more libraries…
status/ .........................Boost-wide test suite
tools/ ...........實用工具, e.g. bjam, quickbook, bcp
more/ .......................................一些文檔
doc/ ...............................所有庫文檔的一部分
3.打開根目錄下的index.html,在上面的“Getting Started”有介紹怎麼開始使用Boost的,大部分的Boost庫隻需要包含頭檔案即可,少部分需要編譯連結。以下是必須編譯的Boost庫:
* Boost.Filesystem
* Boost.GraphParallel
* Boost.IOStreams
* Boost.MPI
* Boost.ProgramOptions
* Boost.Python
* Boost.Regex
* Boost.Serialization
* Boost.Signals
* Boost.System
* Boost.Thread
* Boost.Wave
另外,一些庫可以是可選擇編譯的:
* Boost.DateTime (隻有當你需要使用它的to_string/from_string或者serialization features, or if you're targeting Visual C++ 6.x or Borland.
* Boost.Graph (隻有當你傾向解析 GraphViz 檔案)
* Boost.Math (the TR1 and C99 cmath functions)
* Boost.Random (當你需要使用random_device的時候)
* Boost.Test (can be used in “header-only” or “separately compiled” mode)
4.下面開始一個無需編譯Boost,直接使用頭檔案的示例:
①打開Visual Studio 2008,建立Visual C++工程,基于Win32控制台程式,工程名為example,确定之後,在彈出的對話框中“應用程式設定”打鈎上“控制台應用程式”和“空項目”,點“完成”;
②在“解決方案資料總管”右擊example工程,選擇“屬性”→“C/C++”→“正常”→“附加包含目錄”,輸入剛才解壓Boost的目錄,比如“F:/MyCode/BOOST/boost_1_46_1”,如下圖所示:

③右擊example工程下的“源檔案”→“添加”→“建立項”→左邊的“代碼”→選中右邊的“C++檔案(.cpp)”,檔案名為example,點“添加”,輸入以下代碼:
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
}
④點選菜單欄上“生成”→“生成解決方案”,正常的話會編譯通過,按F5可看結果,結果如下圖所示:
這個example代碼的功能是從标準輸入中讀取一系列整型,然後使用boost::lambda使之每個數乘以3,再把結果寫進标準輸出。
5.1運作安裝版,一路“I Agree”,注意會連接配接網絡,必須放行。之後會彈出選擇下載下傳Boost C++庫1.46.1的鏡像位址,預設就好,繼續“Next”,彈出選擇預設的編譯類型,在左側選擇“Visual C++ 9”,在右側選擇類型,我們一般所用到的運作庫比較多使用多線程,可以在上面的example工程看屬性,如下圖所示:
為此,我們隻需選擇上面四個選項,再根據動态連結和靜态連結需求進行選擇,如下圖所示:
接下去就是選擇元件安裝,沒啥問題就預設了,下一步選擇路徑,接着就開始下載下傳了,如下圖所示:
因為是連接配接網絡下載下傳,是以得一段比較長的時間,下載下傳完之後就會自動安裝好,在設定的目錄下就有個lib檔案夾,裡面就是編譯好的庫。
5.2現在讓我們測試一下那些需要連結才能使用的庫:
①打開上面建立的example工程,将其cpp檔案代碼改為如下:
#include <boost/regex.hpp>
#include <string>
std::string line;
boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
此時,若是生成解決方案的話,就會提示 fatal error LNK1104: 無法打開檔案“libboost_regex-vc90-mt-gd-1_46_1.lib”
②右鍵example解決方案,選擇“屬性”→“配置屬性”→“連結器”→“附加庫目錄”,添加安裝版下載下傳好的lib庫檔案夾路徑,如下圖所示:
③在菜單欄“生成”下拉選擇“生成解決方案”,無警告無錯誤通過。将下面文字儲存成文本文檔,檔案名為jayne.txt,内容如下:
To: George Shmidlap
From: Rita Marlowe
Subject: Will Success Spoil Rock Hunter?
---
See subject.
然後儲存到工程目錄的Debug檔案夾下。接着Win+R輸入CMD進入控制台,cd 轉到此Debug目錄下,輸入example < jayne.txt指令,如下圖所示:
回車之後,文本文檔裡面Subject主題的内容就會被正則比對出來,如下圖所示:
也可以不進入CMD控制台,直接在example解決方案右鍵“屬性”→“調試”→“指令參數”,輸入< jayne.txt ,按“确定”,直接Ctrl+F5運作程式,結果如下圖所示:
6.最後總結,Visual Studio環境的話可以直接下載下傳安裝版的,省去麻煩的編譯過程,但是不帶幫助文檔,這點得自己再從官方網站下載下傳了,目前有漢化Boost文檔,還有一些不錯的中文站點,列舉如下: