牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

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

转自:http://chuiwenchiu.spaces.live.com/blog/cns!CA5D9227DF9E78E8!922.entry


最新版本:http://docs.google.com/View?docid=dcxw59mr_979d22p4p
 
測試環境:
[1] Widnows XP Professional
[2] Visual Studio 2005 Team Studio(VC8.0)
[3] WinCvs 1.3

1. 下載 Boost
  •   透過 CVS 下載最新版
      cvs -d:pserver:anonymous@boost.cvs.sourceforge.net:/cvsroot/boost login
    [詢問密碼時,直接輸入 Enter 略過]
    cvs -z3 -d:pserver:anonymous@boost.cvs.sourceforge.net:/cvsroot/boost checkout boost
    cvs -d:pserver:anonymous@boost.cvs.sourceforge.net:/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 路徑
    • Tools | Options | Projects and Solutions | VC++ Directories
    • 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 <iostream>
#include 
<boost/date_time/gregorian/gregorian.hpp>

using namespace std;
using namespace boost::gregorian;

int _tmain(int argc, _TCHAR* argv[]){
    date_duration dd 
= date(200011- date(190011);
    cout 
<< "The twentieth century had " << dd.days() << " days" << endl; // 36524

    dd 
= date(210011- date(200011);
    cout 
<< "The twenty-first century will have " << dd.days() << " days" << endl; // 36525   
 
    
return 0;
}


參考資料:
[1] http://www.boost.org/more/getting_started.html
[2] http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?URL=N&board_pc2020=c&index=8&id=33560&mode=quarter&type_pc2020=sametitleLevel-2


posted on 2007-11-09 00:30 杨粼波 阅读(946) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理