我正在使用正则表达式尝试在一行代码中找到一年(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";
}
答案 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;
}
,如果下次无法找到问题所在。