文档章节

正则表达式 boost regexp的安装

香芋
 香芋
发布于 2012/06/08 12:57
字数 1873
阅读 826
收藏 0

3 月,跳不动了?>>>

正则表达式 boost regexp的安装

早就听说过这个Boost库的牛B,只是一直没有精力来学习,最近在网上查了查,评论有好有坏,但多一点是好的,不过暂时没有见过有公司使用Boost库来作为公司产品开发的,网上也有说Boost库值得用来学习和研究,但是在做应用方面,考虑到维护什么的,不太适合。的确也是,作为公司产品开发的技术,有时候要考虑到很多东西,不过说功能强就一下子拿来用,以后,技术人员的变动,升级什么的,如果给公司带来更多的麻烦,倒还不如使用人人都懂的MFC,只要能把应用做到位,多余的强功能,不用也罢。。。

好了,开始学习。。。

一、下载和安装。

1.到官网下载个最新的包,我下载的是boost_1_37_0.rar

2.新建一个目录,如:在:d:\Boost,把boost_1_37_0.rar解压到里面,如d:\Boost\boost_1_37_0

3.网上的资料说,解压后,绝大多数的类库就可以使用了,因为里面已经有.h和.cpp的完整源码,所以直接包含在你的工程也是可编译过去的。使用方式:我的机子装了VC 6.0和VS.net 2008,我使用VC 6.0测试了一下,Pass.

方法:在VC->Tools->Options->Directories->Include files里面增加D:\Boost\boost_1_37_0就OK了。

给个例子如下:

#include <vector>
#include <iostream>
#include <boost/lexical_cast.hpp>

using namespace boost ;
using namespace std ;

int main(int argc, char * argv[])
{
vector<int> v1;
vector<int>::const_iterator ci_v1 ;
int iLength = 0 ;

while( iLength < 10 )
{
    try
    {
      if ( iLength == 5 )
        v1.push_back(lexical_cast<int>("DukeJoe")) ;
      else
        v1.push_back(lexical_cast<int>(iLength));
      }
      catch(bad_lexical_cast &ex)
      {
        cout << ex.what()<< endl ;
        v1.push_back(-1);
      }
      iLength++ ;
    }

    cout << "vector --> " ;
    for ( ci_v1 = v1.begin() ; ci_v1 != v1.end() ; ci_v1++ )
    {
      cout << *ci_v1 << " " ;
    }
    cout << endl ;

    return 0 ;
}

这时候VC 6.0就可以编译过去,可以使用Boost一些类库功能了。。。

4.上面的使用方式是,等你的工程需要的时候,才将Boost一些库功能进行编译。但是我们现在也可以先将Boost类的功能编译成.dll和.lib,这样的话,等到我们的工程使用的时候,只需要.dll,.lib,还有相应的.h就可以了,这样我们工程的编译时间也少一点。

一般Boost库是由多个子库功能组合起来的,我可以一下子全部编译所有的子库,也可只编译某一些子库,如regex功能子库。什么是子库?D:\Boost\boost_1_37_0\libs下面有多个文件夹,一个文件夹就是一个子库。

现在我们先介绍怎么编译某个子库:以regex为例

我的机子上面装了VC.net 2008和VC 6.0,因为C++的东西,很多公司还是使用VC 6.0来开发,很少使用VC.net版本,所以决定使用VC 6.0来编译Boost库,然后也在VC 6.0里面使用Boost库,而不使用.net版本的东西,但是到了.net 版本的VC.net也是可以使用Boost库的,其安装和使用过程类似,下面有提示一下的。

方法一:

打开cmd,定位到D:\Boost\boost_1_37_0\libs\regex\build,先打上"D:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT",命令也使用双引号括上,这个VCVARS32.BAT,东东厉害了,VC 6.0不像它的哥们VC.net安装完后,会在环境变量上面加上必要的东西,这个VCVARS32.BAT就是一个加上必要的环境变量的批处理,如果你的VC 6.0安装在C盘,就改D为C,跟着,打上命令"nmake /f vc6.mak",就开始编译了,这里的nmake调用的是VC 6.0的,不是VC.net的nmake,vc6.mak是make文件,如果你想使用VC.net版本来编译,如我使用的是VC.net 2008,所以使用vc9.mak,但是你得使用"Visual Studio 2008 命令提示"的cmd,而不是一般的cmd,进去之后,编译命令改为"nmake /f vc9.mak",就OK了,对于VC.net版本,它也有一个VCVARS32.BAT,大概路径为D:\Program Files\Microsoft Visual Studio 9.0\VC\bin\VCVARS32.BAT,也是一个配置环境变量的批处理,在运行编译命令前,也可以使用绝对路径导一下VCVARS32.BAT。

跟着下来的就是等待编译完成了。呵呵。

编译完成后,D:\Boost\boost_1_37_0\libs\regex\build\vc6里面的.dll和.lib就是我们所需要的东东了,include files在D:\Boost\boost_1_37_0\boost\regex文件夹里。

方法二:

这个方法是使用bjam来编译,什么是bjam?bjam是一个对Boost库进行编译的批处理命令行工具,在那里可以得到它?也是在Boost库里面,但是是以源代码形式提供的,所以我们得首先把bjam编译出来,方法如下:

1>定位到D:\Boost\boost_1_37_0\tools\jam\src,使用记事本打开build.bat(先备份一下),里面有部分内容如下:

//-------------------------------------------------------------------------------------------

:Guess_Toolset
REM Try and guess the toolset to bootstrap the build with...
REM Sets BOOST_JAM_TOOLSET to the first found toolset.
REM May also set BOOST_JAM_TOOLSET_ROOT to the
REM location of the found toolset.

if "_%ProgramFiles%_" == "__" set ProgramFiles=C:\Program Files

//-------------------------------------------------------------------------------------------

如果你的VC安装在D盘,则要改一下红色部分配置。

打开cmd定位到D:\Boost\boost_1_37_0\tools\jam\src,打上build.bat直接运行,开始编译,完成后,在D:\Boost\boost_1_37_0\tools\jam\src\bin.ntx86下面有一个bjam.exe,这个就是我们想要的bjam了。

上面得到bjam后,把它拷贝到D:\Boost\boost_1_37_0目录下,然后我们现在可以使用bjam来编译我们的regex子库了,打开cmd定位到D:\Boost\boost_1_37_0,打上命令"bjam --toolset=msvc-6.0 --build-type=complete --prefix=d:\boost install --with-regex",就可以开始编译了。

编译完成后,D:\Boost下面的include和lib文件夹的东西,就是我们工程需要的东东了。

5.好,现在我们介绍怎么编译整个Boost库,就是说一下把Boost库里面所有的子库全部编译完后,其实很简单,跟上面编译单个子库差水多的命令行,方法如下:

把bjam拷贝到D:\Boost\boost_1_37_0目录下,打开cmd定位到D:\Boost\boost_1_37_0,打上命令"bjam --toolset=msvc-6.0 --build-type=complete --prefix=d:\boost install",就可以开始编译了。上面命令中的--build-type=complete 好像跟以前的版本不一样,以前的好像是使用-sBuild="Debug Release"类似的参数,只有使用这--build-type=complete 才能编译出Debug 和Release版本的库,使用-sBuild不行。

等待吧,挺久的,听说是2个小时。

编译完后,D:\Boost下面的include和lib文件夹的东西,就是我们工程需要的东东了。

6.现在,Boost库全部子库假设已经编译好了,得到D:\Boost\include和D:\Boost\lib,有两个东东就可以在我们的工程里面使用Boost库的功能了。

我们现在使用VC 6.0开发,得先把VC 6.0配置一下,如下:

在VC->Tools->Options->Directories->Include files 加上D:\Boost\include\boost-1_37\boost

在VC->Tools->Options->Directories->Library files 加上D:\Boost\lib

把上面先前设置过的,

在VC->Tools->Options->Directories->Include files里面增加D:\Boost\boost_1_37_0

删掉。

然后打开上面先前编译通过的工程,rebuild一下,是不是也可以编译过去现在?

好了,现在可以使用VC 6.0来使用Boost库作开发了。。。

© 著作权归作者所有

香芋
粉丝 6
博文 23
码字总数 32650
作品 0
海淀
私信 提问
加载中

评论(0)

正则表达式 boost regexp的安装

正则表达式 boost regexp的安装 早就听说过这个Boost库的牛B,只是一直没有精力来学习,最近在网上查了查,评论有好有坏,但多一点是好的,不过暂时没有见过有公司使用Boost库来作为公司产品...

香芋
2012/06/08
38
0
在vc6中使用PCRE-8.33

在vc6中使用PCRE-8.33 1. 引言   最近开发项目要遇到数据检验问题,打算使用正则表达式,因为它简单、高效,重要的是,不用把检验规则硬编码在程序里,放在配置文件中即可。由于使用的开发...

fatzero
2013/12/14
952
0
Oracle 查询不区分大小写 (正则函数)

//不区分大小写查询REGEXPLIKE(字段名, '(" + keyword+ ")', 'i') " ); Oracle中的Like操作符使用''和'%'作为通配符,使用就像这样: SELECT name FROM testlike WHERE name like 'a%'; 即匹......

-wangming-
2016/04/18
584
0
javaScript的正则表达式 (一)

本篇文章我们就来介绍javaScript的正则表达式 RegExp对象也称正则表达式 一.什么是正则表达式? 正则表达式是一个描述字符模式的对象。可以处理复杂的字符串,正则表达式用于对字符串模式匹配...

博为峰教研组
2016/11/08
32
0
JavaScript学习笔记整理(六)

RegExp对象:js中专门疯转一条正则表达式,提供使用正则表达式的常用API 在使用正则表达式时,必须创建RegExp 创建正则表达式:var RegExp=/正则表达式/ig; RegExp的方法 test()检索字符串中指...

weixin_36171533
2017/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

看你有多色游戏案例

看你有多色游戏案例 游戏规则 这款游戏的玩法就是找出所有风格中颜色比较淡的,随着游戏进行后面的方块会越来越多, 这个游戏主要是考验玩家的眼力和注意力, 游戏截图 部分代码 mian.html ...

板栗z丶
4分钟前
13
0
【SpringBoot MQ 系列】RabbitListener 消费基本使用姿势介绍

【MQ 系列】RabbitListener 消费基本使用姿势介绍 之前介绍了 rabbitmq 的消息发送姿势,既然有发送,当然就得有消费者,在 SpringBoot 环境下,消费可以说比较简单了,借助@RabbitListener...

小灰灰Blog
5分钟前
9
0
罗永浩回应做主播带货赚钱还债:主播赚的不是脏钱

  罗永浩的抖音带货生涯,将于 4 月 1 日晚 20 点开始。   虽然老罗对自己带货能力,信心满满,但也有粉丝对其表达了对他直播带货感到失望。   今日,罗永浩发布微博回应称, 不应该感...

水果黄瓜
6分钟前
12
0
Maven配置文件中 mirror和repository的区别及中央仓库配置大全

1、Maven配置文件中 mirror和repository的区别 1.1 repository repository就是个仓库,maven里有两种仓库,Local Repository(本地仓库)和Remote Repository(远程仓库)。 1.1.1 Remote Repos...

其乐m
17分钟前
28
0
Git 恢复本地误删的文件

 通过git进行代码管理的项目,如果在本地编辑的过程中误删了某些文件或者文件夹,可以通过git操作来复原。 Step 1: git status   查看本地对改动的暂存记录。如下图所示,本人误删了文件...

onedotdot
27分钟前
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部