天天看点

[C++]VS2005(VC8) 使用 Boost

測試環境:

[1] Widnows XP Professional

[2] Visual Studio 2005 Team Studio(VC8.0)

[3] WinCvs 1.3

1. 下載 Boost

  透過 CVS 下載最新版

  cvs -d:pserver:[email protected]:/cvsroot/boost login

[詢問密碼時,直接輸入 Enter 略過]

cvs -z3 -d:pserver:[email protected]:/cvsroot/boost checkout boost

cvs -d:pserver:[email protected]:/cvsroot/boost logout

2. 組態設定

執行 C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat

3. 建置與安裝(* [boost] 表示 boost 的根目錄)

  執行 [boost]\tools\jam\build_dist.bat

  將 [boost]\tools\jam\src\boost-jam-3.1.14-1-ntx86\bjam.exe 複製到 [boost]\bjam.exe

  切換到 [boost]\ 執行 bjam "-sTOOLS=vc-8_0" install

  漫長的等待~~~~~~~~ 相關 header 與 lib 產生在 C:\Boost

 修改 C:\Boost\include\boost-1_35\boost\config\suffix.hpp 內容

#  define BOOST_LIB_TOOLSET "vc80"

成如下

#  define BOOST_LIB_TOOLSET "vc"

(或是將 c:\Boost\Lib\ 下的所有 *.lib 的 -vc- 取代為 -vc80- (如:bgl-viz-vc.lib -> bgl-viz-vc80.lib, boost_date_time-vc-1_35.dll -> boost_date_time-vc80-1_35.dll)否則程式在連結時會發生找不到 lib 的錯誤)

將 C:\Boost\include\boost-1_35 加入 VC2005 的 Include 路徑

Tools | Options | Projects and Solutions | VC++ Directories

Show directories for: Include files

將 C:\Boost\lib 加入 VC2005 的 Lib 路徑

Show directories for: Library files

4. 測試

// 正規表示法測試:信用卡號檢測

#include <boost/regex.hpp>

#include <iostream>

bool validate_card_format(const std::string s)

{

        static const boost::regex e("(\\d{4}[- ]){3}\\d{4}");

        return regex_match(s, e);

}

int _tmain(int argc, _TCHAR* argv[])

    std::cout << (validate_card_format("1111-1111-1111-2222")?"PASS":"Error") ; // PASS

    return 0;

// 計算兩個日期相差的天數

#include <boost/date_time/gregorian/gregorian.hpp>

using namespace std;

using namespace boost::gregorian;

int _tmain(int argc, _TCHAR* argv[]){

    date_duration dd = date(2000, 1, 1) - date(1900, 1, 1);

    cout << "The twentieth century had " << dd.days() << " days" << endl; // 36524

    dd = date(2100, 1, 1) - date(2000, 1, 1);

    cout << "The twenty-first century will have " << dd.days() << " days" << endl; // 36525   

继续阅读