您的位置:首页 > 其它

Visual Studio 2010 下 Boost.Regex 库的使用笔记

2013-10-06 16:38 281 查看
这个文章很靠谱,我实际使用过。关键是简单。原文地址最近玩了一把 Boost 中的 Regex 库,发现网上很多文章写的晦涩难懂,更让人生气的是按照其指导是做不出来的,综合几篇文章和自己的实际使用的总结,写个笔记备忘。按照我自己的老习惯来,先直捣黄龙,能够运行实例再说,把东西做出来之后我们再来进一步的了解相关知识点。 开始吧1,下载 Boost Release 1.44.0 的文件包,下载的位置:然后解压缩到自己设定的位置,我这里设定就是 C:\Boost ,名称越简洁越好,以免发生意外。2,设定 msvc 的版本跟编译器信息可能很多人不愿意跟我一样使用这样的目录,为了方便起见,这里用 $BOOST$ 代表你的 Boost 的安装或者解压缩路径,比如在我的机器下,$BOOST$ 就等价于 C:\Boost 。在 $BOOST$\tools\build\v2\user-config.jam 找到下面的几行:# -------------------# MSVC configuration.# -------------------# Configure msvc (default version, searched for in standard locations and PATH).# using msvc ;# Configure specific msvc version (searched for in standard locations and PATH).# using msvc : 8.0 ;#添加 Visual Studio 2010 的配置using msvc : 10.0 : : /wd4819 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 ;如果是 Visual Studio 2005 就是 8.0 ,Visual Studio 2008 就是 9.0 ,这个应该没有疑问的。偷懒就直接粘贴过去吧,这个记下来也没啥用。3,生成 bjam$BOOST$ 目录下面,有个文件 bootstrap.bat 的批处理文件,双击或者在命令行提示符窗口中打开,稍等片刻,就会在该目录下生成 bjam.exe 以及它的 log 文件。4,编译 Boost::Regex,注意,这里只编译  Boost::Regex 库。到 $BOOST$ 目录下,键入 bjam --toolset=msvc --with-regex stage ,或者直接复制粘贴吧,免得麻烦。编译生成的库文件会被在目录 $BOOST$\stage\lib 中。比如,在我的机器上就是:C:\BOOST\STAGE\LIBlibboost_regex-vc100-mt-1_44.liblibboost_regex-vc100-mt-gd-1_44.liblibboost_regex-vc100-mt-gd.liblibboost_regex-vc100-mt.lib同时还会生成 bin.v2 这个临时目录,可以查看一下结构,硬盘空间紧张的话,这个目录可以删除掉的,我的目录结构如下:C:\BOOST\BIN.V2└─libs└─regex└─build└─msvc-10.0├─debug│  ├─link-static│  │  └─threading-multi│  └─threading-multi└─release└─link-static└─threading-multi5,好了,既然成功的编译成功了,下面就来运行实例。我采用的是《Beyond the C++ Standard Library: An Introduction to Boost》这本书中的实例,简单,小巧。能测试成功,就代表你这边文章没白看。我附上这本书的下载链接吧。6,打开 Visual Studio 2010 ,接着应该在读这篇文章的各位应该驾轻就熟了。File->New->Project->Win32 Console Application ,name 的地方取个项目名称了,我就叫:RegexDemo 好了接着next,在Additional options 的地方,选择Empty project,我们自己弄,不要什么预编译头文件(Precompiled header)了,然后 Finish 。7,新建一个cpp文件,把下面的代码复制到文件中,我也是直接复制原书中的例子,但是加了几行代码,不然的话,编译成功后,运行了只能看到:“Press any key to continue.....” >_< ! 太无趣了。接下来设置 include 目录和 lib 目录,Visual Studio 2010 的设置方法有点不一样,需要在你的工程上右键属性才可以。
#include <iostream>#include <cassert>#include <string>#include <boost/regex.hpp>using namespace std;int main(){// 3 digits, a word, any character, 2 digits or "N/A",// a space, then the first word againboost::regex reg("\\d{3}([a-zA-Z]+).(\\d{2}|N/A)\\s\\1");std::string correct="123Hello N/A Hello";std::string incorrect="123Hello 12 hello";/* 原来的代码assert(boost::regex_match(correct,reg)==true);assert(boost::regex_match(incorrect,reg)==false);*/// 新添加几行玩一下。bool b1 = boost::regex_match(correct,reg);bool b2 = boost::regex_match(incorrect,reg);if(b1){cout << "correct!!!" << endl;}cout << "=======================================" << endl;if(!b2){cout << "incorrect!!!" << endl;}return 0;}
F7 编译,结果自然是:========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========Ctrl + F5 直接运行,看到结果了吧。至于例子不解释了,自己看书。因为这个设计到正则表达式的知识,不在本文讨论范围。说好了的,我们运行完实例后,开始相关知识点拓展,不要急躁哈。*^_^*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: