Я хочу, чтобы моя программа возвращала число строк, в которых есть определенная строка. Целая строка должна быть этой строкой.Поиск ряда строк со строкой в файле
Я не знаю, почему он всегда возвращает длину целого файла.
Мой код:
#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 :: двоичный, если вы читаете текст ... – Baldrick
@SamVarshavchik почему возвращается из main без значения UB? – user463035818