读书人

新手boost:regex~

发布时间: 2012-02-06 15:52:44 作者: rapoo

新手boost:regex求助~~
单独编译完boost1.46的regex库了,在/usr/lib里面有libboost_regex.so和libboost_regex.a文件
尝试网上一个简单的regex_search的例子

#include <iostream>
#include <boost/regex.hpp>

using namespace std;
int main()
{
//const char *szReg = "";
const char *szStr = "a334gsd2345fas21df";
//begin search
boost::cmatch mat;//存放匹配结果
boost::regex reg("\\d+");//正则:找出数字
if(boost::regex_search(szStr,mat,reg))
{
cout<<"searched:"<<mat[0]<<endl;
}
}
这个程序大概意思是打印出szStr当中的数字

用g++ -o 这个文件名 可执行文件名 -lboost_regex编译链接通过了
可是执行“./可执行文件”的时候,却没有打印结果,再执行一次,却出现如下提示:
rst: /usr/local/include/boost/smart_ptr/shared_ptr.hpp:412: typename boost::detail::shared_ptr_traits<T>::reference boost::shared_ptr<T>::operator*() const [with T = boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > >]: Assertion `px != 0' failed.
已放弃

其中rst是可执行文件的名字
这是遇到什么原因呢?

[解决办法]
vc2008 +boost 1.39木有问题~~~
从lz给提示信息来看px != 0'断言失败了,也就是说程序期望是px != 0而现在实际上是px == 0,
lz可以尝试看看为什么px就等于0了那?
[解决办法]
在cout后面加一句cin,这样就可以看到结果了。

第二,源代码没有改过的话,重新编译一下。

推荐使用其它正则库

读书人网 >C++

热点推荐