当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++ Builder教程

在C++ Builder6上使用Boost正则表达式库

    正则表达式是一种模式匹配形式,它通常用在处理的文本程序中。比如我们经常使用的grep工具,还是perl语言都使用了正则表达式。传统的C++处理正则表达式是非常麻烦的,这也成为很多其他语言爱好者的笑柄,现在情况不一样了,因为有了boost。
    Boost是一个基于Template的开发源代码库,在这个库中有很多子库用来高效处理各方面的问题,比如字符串拆分,格式化,线程等等,Boost对于每一个C++爱好者都是应该了解的,对于C++ Builder用户如果能在熟练使用VCL的情况下再熟练使用Boost,我想一定如虎添翼。

    一般来说,使用Boost是非常简单,和使用其他STL库没有太大区别,但使用Boost的正则表达式库则不那么容易,因为这个库还需要我们单独编译,下面我将详细介绍如何使用。

    如果你还不知道或者还没有Boost的话,你可以去www.boost.org下载最新版本,作者使用的是1.30版本。将下载下来的zip包[1]解压到任何你喜欢的目录,比如D:\\boost。

    编译正则表达式库

    前面已经提到,这个库需要我们单独编译才能使用,为什么不编译好一起发布呢?主要是考虑到不同的编译器需要不同的链接库文件和链接库太大了。在命令行下,进入[%Boost]\\Libs\\RegEx\\Build目录,直接敲入make –fbcb6.bat命令开始编译,这里请大家注意了,如果你的计算机上同时安装了BCB5,请一定要把path设置成为BCB6的bcc32.exe程序所在的目录,否则可能使用BCB5的make程序,这样虽然能编译但最后不能使用。

    编译过程相当耗时,你需要耐心等待,最终编译完成,会在[%Boost]\\Libs\\RegEx\\Build目录生成一个BCB6目录,在这个目录生成了很多lib文件和dll文件,把所有dll文件复制到windows系统目录,所以lib文件复制到bcb6\\lib目录。如果你不想这么麻烦的复制文件,可以在编译时加入install参数,就像这样make –fBcb6.bat install,不过作者还是比较喜欢前一种方式,这样我可以知道到底生成了什么文件。现在编译已经完成了,你可以体现boost的神奇魅力了。

    一个测试程序

    在BCB6中创建console程序,编写下列代码:

    #include<deque>

    #include<iostream>

    #include<algorithm>

    #include<boost/regex.hpp>


    int main()

    {

    using namespace boost;

    using namespace std;

    regex expression("\\\\s+href\\\\s*=\\\\s*\\"([^\\"]*)\\"",regbase::normal|regbase::icase);

    string s="<a href=\\"index.html\\"><img src=\\"logo.gif?http://www.xvna.com\\"></a>";

    deque<string> result;

    regex_split(std::back_inserter(result),s,expression);

    copy(result.begin(),result.end(),ostream_iterator<string>(cout,"\\n"));

    int c;

    cin>>c;

    return 0;

    }


    设置BCB6 Project属性的Lib Path和Include Path为你安装boost的目录,运行你会看到结果:

    index.html

    可以看到index.html已经从字符串中提出出来了,那么为什么会是这样呢?

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接