我正在接受这样的用户输入:
algo_type "pattern" filename
前任。
bf "inging" input_file.txt
到目前为止,我将用户输入分成三个不同的变量,一个用于 algo_type,一个用于我正在寻找的模式,一个用于文件名。一旦我得到模式和文件名,我就会尝试将模式带入 Bruteforce 算法并搜索每一行并打印该模式在 .txt 文件的行中出现的位置。现在,虽然每次我将输入输入到算法中,它都会返回 -1 表示 BruteForce 没有运行?我在这里到底做错了什么?
int BruteForce(const string& line, const string& pattern){
int n , m;
n = line.length();
m = pattern.length();
for(int i = 0 ; i < n - m ; i++){
int j = 0;
while( j < m && line[i + j] == pattern[j]){
j = j+1;
if( j == m){
return i;
}
}
}
return -1;
}
int main(){
string text, algo_type , pattern , fname, line;
getline(cin ,text);
istringstream iss(text);
if(iss >> algo_type >> pattern >> fname){
cout << algo_type << pattern << fname << "'\n'";
}
int i = 0;
ifstream ifs;
ifs.open(fname.c_str());
while(getline(ifs, line) && fname != ""){
if( algo_type == "bf"){
cout << "Line " << i++ << ":" << BruteForce(line,pattern) << endl;
}
}
return 0;
}