我希望我的程序返回其中存在特定字符串的行數。 整行應該是這個字符串。在文件中查找具有特定字符串的行數
我不知道爲什麼它總是返回整個文件的長度。
我的代碼:
#include <iostream>
#include <string>
#include <fstream>
#include <limits>
#include <windows.h>
using namespace std;
int main() {
int x;
x=0;
string filename, inputfilename, line;
ifstream inputfile;
while(!inputfile.is_open()) {
cout << "Input filename: ";
getline (cin, inputfilename);
inputfile.open(inputfilename.c_str(),ios::in | ios::binary);
}
//string obj = "[I.LOVE.COOKIES]"; //Was like this
string obj = "[I.LOVE.COOKIES]\r"; //Adding \r solved the problem
while(getline(inputfile, line))
{
if(line==obj)
{
return x;
}
else
{
x++;
}
}
return 0;
}
因爲該文件不包含搜索字符串,並且顯示的代碼在這種情況下表現出未定義的行爲,所以通過從'main()'返回而沒有值返回。此外,這個程序只能處理非常小的文件,因爲程序的返回碼僅限於7位。換句話說:廢棄這一切,並從頭開始重寫。 –
如果你正在閱讀文本,我會放棄ios :: binary ... – Baldrick
@SamVarshavchik爲什麼從主體返回沒有價值的UB? – user463035818