现在的位置: 首页 > IT运维 > 正文

VS2010编译使用Boost正则表达式

2014年12月03日 IT运维 ⁄ 共 1714字 暂无评论 ⁄ 被围观 0+

本文介绍使用boost库正则表达式来解决字符匹配、搜索、替换等应用。现在介绍一下VC2010中怎样配置与使用boost库正则表达式。

1、下载与安装boost库,下载地址:http://sourceforge.net/projects/boost/files/latest/download?source=files,将其解压到E:\boost目录。

2、编译动态库,本文只要支持正则表达式就可以,因此只需要编译E:\boost\libs\regex\build目录下的文件。这步比较关键。
具体操作:

在“运行”里输入“cmd”,打开命令提示符;
输入命令“cd E:\boost\libs\regex\build”,设置当前目录
设置VC2010的配置环境变量,找到Microsoft Visual Studio 10.0\VC\bin\VCVARS32.BAT文件,把VCVARS32.BAT文件用鼠标拖到打开的cmd窗口("F:\Program Files\Microsoft Visual Studio\VC\bin\VCVARS32.BAT"),然后回车。
输入命令“nmake -f vc10.mak”

等待几分钟,E:\boost\libs\regex\build多了一个vc10的文件夹,里面是很多lib和dll文件。

3、配置VC2010 “VC++目录”,使它编译使时候能找到正则库。

打开vc2010,分别在每个项目中的Properties中设置,“配置->VC++路径->包含路径”,加入“e:\boost”
选择“配置->VC++路径->包含路径”,加入“e:\boost\libs\regex\build\vc100”

如下图:

难道要每个项目都设置一遍常用的Include吗?答案是,不用。

在IDE中,打开View->Other Windows->Property Manager。展开树形后,你会发现一个名为“Microsoft.Cpp.Win32.user”的项目(如下图)。

右击并点击“Properties”后,你会看到一个和VC Project properties类似的属性设置框。

现在,你应该知道答案了吧。对,就是这里。只要将常用的Include都放入这里就可以达到你要的效果。

4、编写程序测试

VC2010中默认的是UNICODE编码字符集,要使用regex的UNICODE版本tregex.关于正则表达式的应用可以查看使用说明和实例,分别放在libs\regex\doc和libs\regex\example目录中.注意在编译连接的时候可能会报告libboost_regex-vc100-mt-gd-1_57.lib文件无法找到,需要把libboost_regex-vc100-mt-gd-1_53.lib改成libboost_regex-vc100-mt-gd-1_57.lib。libboost_regex-vc100-mt-1_53.lib 改名 libboost_regex-vc100-mt-1_57.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[i].first, what.length(i));
MessageBox(sRet);
}
}
else
{
MessageBox(_T("Error Input"));
}

输出的结果如下:

select gm from tab
gm
tab

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#