【发布时间】:2014-08-06 23:53:02
【问题描述】:
我正在尝试在 Visual Studio Ultimate 2012 中编译以下代码。它给我一个错误,说我正在调用模板 regex_search() 不存在的重载。
#include <regex>
struct Token
{
//lexertl token wrapper...
};
class Lexer
{
//...
Token &curr;
bool skipUntil(const std::regex ®exp);
};
bool Lexer::skipUntil(const std::regex ®exp)
{
std::smatch m;
const char *str = curr.results.start._Ptr; //compiles
//ERROR ON NEXT LINE (overload doesn't exist, but it should...)
if(std::regex_search(str, regexp, m)) {
curr.results.start = m[0].first;
curr.results.end = curr.results.start;
}
}
这是我正在尝试使用的模板,据我所知存在...
//from <regex>
template <class charT, class Alloc, class traits>
bool regex_search (const charT* s, match_results<const charT*, Alloc>& m,
const basic_regex<charT,traits>& rgx,
regex_constants::match_flag_type flags = regex_constants::match_default);
我知道一个简单的解决方法是将 const char * 转换为 std::string,但考虑到这样的操作成本太高。
【问题讨论】:
标签: c++ visual-c++ visual-studio-2012 c++11