本人入门小白一枚,最近在看Boost库,因为需要用到正则匹配。安装完boost库后用网上给的库的测试代码编译可以通过没问题。然后我按照参考书上写一段发现怎么也通过不了,试过两个版本的vs,两个版本的boost,两台机器,都是报这个错,网上搜罗了一下好像也很少有这个问题,麻烦各位前辈指教指教
代码:
#include "stdafx.h"
#include <iostream>
#include <boost/xpressive/xpressive_dynamic.hpp>
using namespace std;
using namespace boost::xpressive;
int _tmain(int argc, _TCHAR* argv[])
{
string str("asijans12n14n212939jc1994jc;");
cregex reg = cregex::compile("\\d{4}[a-z]+");
cmatch results;
if (regex_match(str, results, reg)){
cout << "done" << endl;
}
else {
cout << "wrong" << endl;
}
return 0;
}
报错信息:
.......error C2440: “初始化”: 无法从“std::_String_iterator<std::_String_val<std::_Simple_types<char>>>”转换为“const char *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1> ...... 参见对正在编译的函数 模板 实例化“bool boost::xpressive::regex_match<std::string,const char*>(BidiRange &,boost::xpressive::match_results<const char *> &,const boost::xpressive::basic_regex<const char *> &,boost::xpressive::regex_constants::match_flag_type,void *)”的引用
1> with
1> [
1> BidiRange=std::string
1> ]
包括用其他的查找啊 替换啊什么的 都是报类似的参考模板实例化什么的错误
定位错误信息是在boost库文件里