天天看點

VC2008中配置與使用boost庫正規表達式

本文介紹使用boost庫正規表達式來解決字元比對、搜尋、替換等應用。

1、下載下傳與安裝boost庫

2、編譯動态庫,本文隻要支援正規表達式就可以,是以隻需要編譯E:/boost/libs/regex/build目錄下的檔案。這步比較關鍵。

    具體操作:

  在“運作”裡輸入“cmd”,打開指令提示符;

  輸入指令“cd E:/boost/libs/regex/build”,設定目前目錄

  設定VC2008的配置環境變量,找到Microsoft Visual Studio 9.0/VC/bin/VCVARS32.BAT檔案,把VCVARS32.BAT檔案用滑鼠拖到打開的cmd視窗("F:/Program Files/Microsoft Visual Studio/VC/bin/VCVARS32.BAT"),然後回車。

  輸入指令“nmake –f vc9.mak”

  等待幾分鐘,E:/boost/libs/regex/build多了一個vc9的檔案夾,裡面是很多lib和dll檔案。

3、配置VC2008 “VC++目錄”,使它編譯使時候能找到正則庫。

  打開vc2008,選擇“工具->選項->項目與解決方案->顯示以下内容的目錄-> 包含檔案”,加入一行“E:/BOOST”

   選擇“工具->選項->項目與解決方案->顯示以下内容的目錄-> 庫檔案”,加入一行“E:/BOOST /libs/regex/build/vc90” 

4、編寫程式測試

   VC2008中預設的是UNICODE編碼字元集,要使用regex的UNICODE版本tregex.關于正規表達式的應用可以檢視使用說明和執行個體,分别放在libs/regex/doc和libs/regex/example目錄中.注意在編譯連接配接的時候可能會報告libboost_regex-vc90-mt-gd-1_39.lib檔案無法找到,需要把libboost_regex-vc90-mt-gd-1_38.lib改成libboost_regex-vc90-mt-gd-1_39.lib

  建立一個對話框的MFC工程,

  加入頭檔案

  #include <boost/regex/mfc.hpp>

  在按鈕滑鼠單擊事件響應函數中加入

    boost::tregex expression(_T("^select ([a-zA-Z]*) from ([a-zA-Z]*)"));

    CString sRet;

    CString in = _T("select gm from tab");

    boost::tmatch what;

    if(boost::regex_match(in, what, expression))//CString轉string

    {

        for(int i=0;i<what.size();i++)

        {

            sRet =  CString(what.first, what.length(i));

            MessageBox(sRet);

        }

    }else{

        MessageBox(_T("Error Input"));

    }

  輸出的結果如下:

select gm from tab

gm

tab

繼續閱讀