Я пытаюсь прочитать строку из файла и сравнить ее с другой строкой. По какой-то причине getline просто возвращает и пустую строку.getline dosnt read или return from file
int count =0;
string line;
ifstream emailFile;
emailFile.open("email.txt");
if (emailFile.is_open())
{
cout << "file open \n";
while (emailFile.eof()!=true)
{
getline(emailFile,line);
cout <<line<<endl;
for (int i=0; i<27; i++)
{
cout <<"line: "<< line << endl;
cout<< "Spamword: "<< spamWords[i]<<endl;
if (line.find(spamWords[i]) != string::npos)
{
cout <<"found line: "<< line << endl;
cout<< "found Spamword: "<< spamWords[i]<<endl;
count +=2;
}
}
}
}
else cout<< "file not found";
cout <<count;
}
Я попытался устранить неисправность, и я действительно не понимаю, почему ничего не читается.
Любая помощь будет оценена по достоинству.
Не отбрасывайте возвращаемое значение 'getline'. –
@KerrekSB yep. obsi, измените 'while (! eof)' line for 'while (getline (emailFile, line))' Это поймает все условия ошибки, о которых вы, вероятно, захотите. Дайте это также прочитать: http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – user4581301