代码:
#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:
答案 0 :(得分:3)
扩展我的评论
示例here明确声明std::string::const_iterator
类型的变量,然后将它们传递给boost::regex_search
,因此没有歧义。 (与llonesmiz相同的事情)
或者,如果您使用的是C ++ 11,则可以调用cbegin
和cend
来消除歧义。
答案 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);
}
然后根据需要使用结果。