boost :: regex_search上的“没有匹配函数”错误,我做错了吗?

时间:2013-01-30 10:39:43

标签: regex boost

代码:

#include <string>
#include <boost/regex.hpp>
int main() {
  boost::smatch what;
  boost::regex regex("some +", boost::regex::icase);
  std::string mystring = "some     string";
  bool search_result = boost::regex_search(mystring.begin(),mystring.end(), what, regex);
}

错误消息是lengty,只有第一行:

<stdin>: In function 'int main()':
<stdin>:7:88: error: no matching function for call to 'regex_search(std::basic_string<char>::iterator, std::basic_string<char>::iterator, boost::smatch&, boost::regex&)'
<stdin>:7:88: note: candidates are:
In file included from d:\boost/boost/regex/v4/regex.hpp:148:0,
                 from d:\boost/boost/regex.hpp:31,
                 from <stdin>:2:

2 个答案:

答案 0 :(得分:3)

扩展我的评论

示例here明确声明std::string::const_iterator类型的变量,然后将它们传递给boost::regex_search,因此没有歧义。 (与llonesmiz相同的事情)

或者,如果您使用的是C ++ 11,则可以调用cbegincend来消除歧义。

答案 1 :(得分:1)

我知道您正在尝试在整个字符串中搜索正则表达式;如果是这样,这应该有用。

#include <string>
#include <boost/regex.hpp>
int main() {
  boost::smatch what;
  boost::regex regex("some +", boost::regex::icase);
  std::string mystring = "some     string";
  bool search_result = boost::regex_search(mystring, what, regex);
}

然后根据需要使用结果。