2015-07-24 2 views
0

Я пытаюсь прочитать строку из файла и сравнить ее с другой строкой. По какой-то причине 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; 

} 

Я попытался устранить неисправность, и я действительно не понимаю, почему ничего не читается.

Любая помощь будет оценена по достоинству.

+1

Не отбрасывайте возвращаемое значение 'getline'. –

+0

@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

ответ

1

У этого человека была та же проблема, что у вас есть.

http://www.cplusplus.com/forum/beginner/27799/

Убедитесь, что ваш текстовый файл находится в том же каталоге, что ехе встроен в. Из приведенной выше ссылки эта строка кода может помочь убедиться, что вы действительно находитесь в файле.

//Check if data file is open and reports 
if(read.is_open()) 
    cout << "File ./" << file_name << " is open.\n"; 
    else 
cout << "Error opening " << file_name << ".\n";