Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;11正则表达式迭代器重载编译器错误 我对C++中的正则表达式有点新。我的头有点晕,因为它比我想象的要复杂得多_C++_Regex_Visual Studio 2010_Visual C++_C++11 - Fatal编程技术网

C++;11正则表达式迭代器重载编译器错误 我对C++中的正则表达式有点新。我的头有点晕,因为它比我想象的要复杂得多

C++;11正则表达式迭代器重载编译器错误 我对C++中的正则表达式有点新。我的头有点晕,因为它比我想象的要复杂得多,c++,regex,visual-studio-2010,visual-c++,c++11,C++,Regex,Visual Studio 2010,Visual C++,C++11,在我的实际代码(我在下面缩写)中,我想使用迭代器在一个大字符串中从一个地方移动到另一个地方,从中提取不同的信息片段。现在我甚至在编译这段代码时都遇到了麻烦 string email1S = "abc 31432"; smatch results; regex mcn("([[:digit:]]+)"); string::const_iterator curPosition = email1S.begin(); if (regex_search(curPosition, email1S.end(

在我的实际代码(我在下面缩写)中,我想使用迭代器在一个大字符串中从一个地方移动到另一个地方,从中提取不同的信息片段。现在我甚至在编译这段代码时都遇到了麻烦

string email1S = "abc 31432";
smatch results;
regex mcn("([[:digit:]]+)");
string::const_iterator curPosition = email1S.begin();

if (regex_search(curPosition, email1S.end(), results, mcn))
{
    cout << "We have a match" << endl;
    cout << results[1].str() << endl;
}
curPosition += results[0].length();
显然与regex_搜索的任何重载都不匹配。错误(来自Visual Studio 2010)描述为似乎它希望使用完全不同的重载:

Error   1   error C2780: 'bool std::tr1::regex_search(const std::basic_string<_Elem,_StTraits,_StAlloc> &,const std::tr1::basic_regex<_Elem,_RxTraits> &,std::tr1::regex_constants::match_flag_type)' : expects 3 arguments - 4 provided    
Error 1 Error C2780:'bool std::tr1::regex_search(const std::basic_string&,const std::tr1::basic_regex&,std::tr1::regex_constants::match_flag_type)':需要3个参数-提供4个参数

我一定遗漏了一些基本的东西。

第一个和第二个参数的类型必须相同(如果这些参数是迭代器)。例如,您可以使用函数
cend()
代替
end()


我试了一下,但还是没有成功。我认为这是与我试图获取的重载相关联的错误:
error 8 error C2782:'bool std::tr1::regex_search(_BidIt,_BidIt,std::tr1::match_results&,const std::tr1::basic_regex&,std::tr1::regex_constants::match_flag_type)':模板参数“_BidIt”不明确
Edit:将正确的错误放入。@FrankWeindel,你能把模棱两可的地方贴出来吗?这段代码使用clang和g++编译,没有任何错误。@FrankWeindel-当你“试一试”时,大概你写了一些代码。我只是按照@soon的建议做了。这是我的代码:我知道我做了什么。当我按照@soon的建议去做的时候,我忘了我在之前的尝试中把“smatch”改成了“cmatch”。这使编译器对应该为哪种类型生成代码感到困惑。我希望这些错误信息能更清楚一些。
Error   1   error C2780: 'bool std::tr1::regex_search(const std::basic_string<_Elem,_StTraits,_StAlloc> &,const std::tr1::basic_regex<_Elem,_RxTraits> &,std::tr1::regex_constants::match_flag_type)' : expects 3 arguments - 4 provided    
if (regex_search(curPosition, email1S.cend(), results, mcn))