类型smatch没有可行的重载运算符

时间:2017-04-06 21:56:59

标签: c++ regex string

我正在使用正则表达式尝试在一行代码中找到一年(4个整数)。我在这一行编译错误,如果他们找到我想要将它们作为整数返回的四个字符。

if(regex_search(names,match,expr)){
    return stoi(match[index]);
}

索引似乎是问题,这是一个无符号索引,作为查找年份的函数的参数。感谢您的帮助,如果您需要更多信息,请告诉我们。

这是所有代码

#include <iostream>
#include <fstream>
#include <string>
#include <regex>

using namespace std;

int find_year(string& names, unsigned index = 0);

int main(){
    ifstream oldretire;
    string names;
    oldretire.open("oldretirement.txt");
    getline(oldretire, names);
    int year = find_year(names);
    cout << year;
}

int find_year(string& names){
    smatch match;
    regex expr("[0-9]{4}");

    if(regex_search(names,match,expr)){
        return stoi(match[index]);
    }
    else
        cout << "No matching arguement";
}

1 个答案:

答案 0 :(得分:0)

代码中存在两个问题:

  • 两个chmod 775 /path/repository/ chown apache:apache /path/repository 个签名不匹配。 (这导致编译错误)
  • 如果找不到匹配项,则会遗漏find_year语句。

更正版本:

return

提示:使用更严格的编译选项编译程序会更好,例如#include <iostream> #include <string> #include <regex> using namespace std; int find_year(string& names, unsigned index = 0); int main(){ string names = "foo bar barbar1829foofoo"; int year = find_year(names); cout << year; return 0; } int find_year(string& names, unsigned index){ smatch match; regex expr("[0-9]{4}"); if(regex_search(names,match,expr)){ return stoi(match[index]); } else cout << "No matching arguement"; return -1; } ,如果下次无法找到问题所在。