Boost正则匹配一直模板实例化报错

ts1669 2018-03-23 10:04:48
本人入门小白一枚,最近在看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库文件里

...全文
297 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ts1669 2018-03-23
  • 打赏
  • 举报
回复
引用 2 楼 qq_30918465的回复:
regex_match第一个参数可能是需要char*类型的字符串吧
还真是……但是会有警告,不过能编译通过就可以验证我后续的代码了 感谢!
永远的追梦人 2018-03-23
  • 打赏
  • 举报
回复
regex_match第一个参数可能是需要char*类型的字符串吧
ts1669 2018-03-23
  • 打赏
  • 举报
回复
忘了包含<string>,但是跟这个没关系哈,还是报这个错。
ts1669 2018-03-23
  • 打赏
  • 举报
回复
引用 4 楼 赵4老师的回复:
处理汉字的话请改用wregex
好的,谢谢您!请问如果我想定位匹配出错的子段并打印,应该怎么做呢?
赵4老师 2018-03-23
  • 打赏
  • 举报
回复
处理汉字的话请改用wregex

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧