您的位置:首页 > 编程语言 > C语言/C++

如何在Open C/C++应用中使用Boost.Regex

2008-09-15 21:50 337 查看
尽管新版的Open C/C++ SDK的发布支持了stlport, boost等库,但boost的支持尚不完整。前些时曾初步测试Regex库,编译时提示系统头文件中有许多错误。近日得空终于使得这个测试例子能运行了。下面描述具体过程:

我的测试环境是: SDK: S60 3rd MR Ed + Open C/C++ SDK; IDE: Carbide.c++ 1.3

0、准备工作

安装OpenC/C++ SDK,这里就不赘述了。然后以该SDK附带的boost例子为基础创建一个regex_ex例子项目。Regex例子可以在网上找一个,比如这里的:

http://www.cs.brown.edu/~jwicks/boost/libs/regex/doc/examples.html
http://www.onlamp.com/lpt/a/6535

1、自定义boost的选项:

打开boost/config/user.hpp文件,定义下面两个宏: (原来就有,把注释符号去掉就行了)
#define BOOST_DISABLE_WIN32
#define BOOST_ALL_NO_LIB

2、修改MIN_WCHAR的定义

打开wchar.h文件,将

#define WCHAR_MIN (wchar_t)__INT_MIN

改为
#define WCHAR_MIN __INT_MIN

即,去掉wchar_t强制转换。否则这个在宏判断时导致莫名其妙的问题。

可保留 WCHAR_MAX的定义不变,没有用到。

3、修正Boost.Regex库中的一个问题:

打开boost/regex/v4/basic_regex_parser.hpp,修改

std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), m_end - m_position);



std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), static_cast<std::ptrdiff_t>(m_end - m_position));

4、编译与链接regex的源代码
不知Open C/C++ SDK是否有Boost.Regex库的lib文件,我采用的是直接从Regex源代码编译(下载Boost1.35)。

最后,Boost.Regex测试例子在Emulator与真机上均顺利通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: