vc7 中 boost:: regex_match 的 "应输入 5 个参数,却提供了 3 个" 编译错误

vc7 中 boost:: regex_match 的 "应输入 5 个参数,却提供了 3 个" 编译错误
vc7导入一个vc6的工程
有如下语句
regex_match((LPCSTR)s, what, ex)

在vc6中完全正常
到vc7中出现编译错误:

“bool boost::regex_match(BidiIterator,BidiIterator,boost::match_results<BidiIterator,Allocator> &,const boost::reg_expression<charT,traits,Allocator2> &,boost::regex_constants::match_flag_type)” : 应输入 5 个参数,却提供了 3 个

解决方法:

regex_match(string((LPCSTR)s), what, ex)


解释: 由于LPCSTR类型对于regex_match 并不明确, 指向了其他重载方法, 故需明确一下类型

补充: 由于regex_match的第一个参数需要的是字符串的引用, 所以直接用string((LPCSTR)s) 作为参数是不行的, 出现匹配结果乱码

正确的做法是定义string tmp((LPCSTR)s); 然后调用regex_match(tmp, what, ex)

你可能感兴趣的:(vc7 中 boost:: regex_match 的 "应输入 5 个参数,却提供了 3 个" 编译错误)