2012年3月2日

C++下类似Perl正则表达式的支持库deelx.h中Bug的修正

今天要转换一段Perl中的正则表达式替换代码到C++中。以前积累下的deelx库可以方便的发挥作用了。
原始的deelx.h可以在这里找到 http://www.regexlab.com/zh/deelx/introidx.htm

但是在使用deelx的Replace功能时,总是遇到三处Bug,如下:
deelx.h:3626: error: cast from ‘const char*’ to ‘int’ loses precision
deelx.h:3637: error: cast from ‘const char*’ to ‘int’ loses precision
deelx.h:3644: error: cast from ‘const char*’ to ‘int’ loses precision

不管我怎么修正我的main.cpp总是会得到这样三个Bug,百思不得其解。最后在一个论坛上找到了解决方案 http://stackoverflow.com/questions/153065/converting-a-pointer-into-an-integer

原来是deelx.h在64位机器上编译时,原先的强制转换(int)都遇到了问题,需要修改为(size_t)来自适应64位的编译器。

三处bug都从(int)修改为(size_t)后就都解决掉了。现在的Replace功能就能正常使用了。

留在此处供遇到同样问题的朋友参考。

1 条评论:

黄赟 说...

C++11已经支持正则表达式了