VC6 0下配置boost庫使用正規表示式

2021-06-21 21:35:29 字數 4052 閱讀 6568

上網baidu一下,發現支援正則的庫還真不少,大概有以下幾種:boost,gnu,vc7帶的atl中的和微軟發布的greta。

網上的朋友對boost評價不錯,決定就使用是它了!

我解壓的目錄是d:\boost

2、然後是編譯,我只要支援正規表示式就可以,因此只需要編譯d:\boost\libs\regex\build目錄下的檔案。據說全部編譯要花將近2個小時,沒有驗證過,在我家裡的機器上編譯正規表示式部分只用了不到5分鐘。

網上介紹的如何編譯最多的一篇文章是「vc利用boost庫解析正規表示式」,如果有人能根據這篇文章編譯成功不妨告訴小弟一聲……

以下是我的操作:

在「執行」裡輸入「cmd」,開啟命令提示符;

輸入命令「cd d:\boost\libs\regex\build」//設定當前目錄

輸入命令「d:」//轉到當前目錄

接下來是很關鍵的一步:

很多文章是這樣說的「輸入 nmake -fvc6.mak」

但是出現了「'nmake' 不是內部或外部命令,也不是可執行的程式或批處理檔案。」的錯誤提示。

然後你就會拼命查詢原因,結果又有文章上說是環境變數沒配置好,然後給出一堆「set」。

也有的文章說是執行一下visual studio安裝目錄下的vc98\bin\vcvars32.bat檔案就ok了。

你按照文章作者的方法做的,結果發現問題依舊!

以上說法都是正確的,但是說得都不是很完整,出現錯誤提示的根本原因就是環境變數沒配置好,不識別nmake命令,配置過jdk的朋友就很容易明白。如果按照作者的要求搞一堆「set」,未免大題小作了吧,因為我們只需要用一次'nmake' 就可以解決問題了。

vcvars32.bat正式配置環境變數的批處理檔案,但是配置的引數只在當前視窗有效,也就是說當你雙擊執行後視窗關閉,環境變數已經沒有了。

於是我用了以下方法:

把vcvars32.bat檔案用滑鼠拖到開啟的cmd視窗("d:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"),然後回車。

輸入命令「nmake -fvc6.mak」

等待幾分鐘,ok了!,d:\boost\libs\regex\build多了乙個vc6的資料夾,裡面是很多lib和dll檔案。

3、到此資源已經準備好了,下面要做的工作是配置vc6.0,使它編譯使時候能找到正則庫。

把vc6下的所有lib和dll檔案拷貝到visual studio安裝目錄下的vc98\boostrex(boostrex是我自己建的)

然後開啟vc6.0,選擇「tools->options->directories->include files」,加入一行「d:\boost」

選擇「tools->options->directories->library file」,加入一行「c:\program files\microsoft visual studio\vc98\boostrex」(彩色部分是我的visual studio安裝目錄)

配置也ok了!

4、編寫程式測試

sdk下的測試:

#include "stdafx.h"

#include

#include

#include

#include

#include

using namespace std;

using namespace boost;

regex expression("^select ([a-za-z]*) from ([a-za-z]*)");

bjbjz.howbk.com;

shbjz.howbk.com;

tjbjz.howbk.com;

cqbjz.howbk.com;

hebbjz.howbk.com;

jlbjz.howbk.com;

sybjz.howbk.com;

dlbjz.howbk.com;

asbjz.howbk.com;

jnbjz.howbk.com;

qdrbjz.howbk.com;

zbbjz.howbk.com;

dybjz.howbk.com;

ytbjz.howbk.com;

wfbjz.howbk.com;

tybjz.howbk.com;

xabjz.howbk.com;

sjzbjz.howbk.com;

tsbjz.howbk.com;

qhdbjzz.howbk.com;

lybjz.howbk.com;

zzbjz.howbk.com;

whbjz.howbk.com;

csbjz.howbk.com;

wxbjz.howbk.com;

njbjzz.howbk.com;

lczem.howbk.com;

wzme.howbk.com;

labjz.howbk.com;

czme.howbk.com;

lfbjz.howbk.com;

whmi.howbk.com;

qdmt.howbk.com;

ycme.howbk.com;

ylme.howbk.com;

csme.howbk.com;

hebjz.howbk.com;

ncme.howbk.com;

ykme.howbk.com;

xyme.howbk.com;

xmme.howbk.com;

fzme.howbk.com;

wzcm.howbk.com;

sxcm.howbk.com;

hzme.howbk.com;

jnme.howbk.com;

dyme.howbk.com;

hfme.howbk.com;

hfme.howbk.com;

czce.howbk.com;

czmt.howbk.com;

zzmi.howbk.com;

jcbjz.howbk.com;

nbme.howbk.com;

nbzj.howbk.com;

wzbze.howbk.com;

sxzje.howbk.com;

hzzj.howbk.com;

jhbjz.howbk.com;

jnbzm.howbk.com;

lyjz.howbk.com;

qdzjb.howbk.com;

whait.howbk.com;

dyzj.howbk.com;

ytjz.howbk.com;

wfjz.howbk.com;

heze.howbk.com;

int main(int argc, char* argv)

{std::string in;

cmatch what;

cout << "enter test string" << endl;

getline(cin,in);

if(regex_match(in.c_str(), what, expression))

{for(int i=0;i

輸入: select name from table

輸出: str:select name from table

str:name

str:table

mfc下的測試(有幾個地方要注意,下面有提示):

新建乙個對話方塊的mfc工程,

加入標頭檔案

#include

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

boost::regex expression("^select ([a-za-z]*) from ([a-za-z]*)");

cstring in = "select gm from tab";

cstring sret;

boost::cmatch what;

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

{for(int i=0;i

輸出的結果跟上面一樣。

VC6 0下編譯boost庫的regex

今天要用到正規表示式,用網上的方法,直接使用命令 nmake vc6.mak 提示 nmake 不是內部或外部命令,也不是可執行的程式 上網搜尋了一下,說執行命令 call c program files microsoft visual studio vc98 bin vcvars32.bat 重...

VC6 0下配置boost庫使用正規表示式

最近做開發碰到了長字串匹配 搜尋的問題,最先想到的是使用正規表示式,簡單 高效。但是我用的開發工具是vc6.0,不支援正規表示式。上網baidu一下,發現支援正則的庫還真不少,大概有以下幾種 boost,gnu,vc7帶的atl中的和微軟發布的greta。網上的朋友對boost評價不錯,決定就使用是...

VC6 0下配置boost庫使用正規表示式

最近做開發碰到了長字串匹配 搜尋的問題,最先想到的是使用正規表示式,簡單 高效。但是我用的開發工具是vc6.0,不支援正規表示式。上網baidu一下,發現支援正則的庫還真不少,大概有以下幾種 boost,gnu,vc7帶的atl中的和微軟發布的greta。網上的朋友對boost評價不錯,決定就使用是...