測試環境:
[1] Widnows XP Professional
[2] Visual Studio 2005 Team Studio(VC8.0)
[3] WinCvs 1.3
1. 下載 Boost
[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?<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(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???
?
????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(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???
?
????return?0;
}