0

代码:

#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);
}

错误消息很长,这里只有第一行:

<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:
4

2 回答 2

3

在上面扩展我的评论

此处的示例显式声明了类型变量std::string::const_iterator,然后将它们传递给boost::regex_search,因此没有歧义。(和 llonesmiz 做的一样)

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

于 2013-01-30T16:37:52.940 回答
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);
}

然后根据需要使用结果。

于 2013-01-31T07:29:03.687 回答