В настоящее время я пытаюсь прочитать ввод из текстового файла только с одной строкой на C++; Я могу извлечь одну строку текста из файла успешно в строку, используя std :: getline (файл, строка). После извлечения строки больше нет текста. Когда я пытаюсь проверить состояние потока, он никогда не вернет false при вызове file.good(), и будет достигнут известный «конец» файла. Почему это? Смотрите ниже код:Конец файла и состояние входного потока C++
#include<fstream>
#include<cstring>
using namespace std;
ifstream file;
string test;
file.open("HW6.txt");//HW6.text is one line text file
getline(file,test);//extracts the line of text; file should be blank now
cout<<file.good(); //this returns true
getline(file,test); //attempt to extract text from blank file
cout<<file.good(); //this returns true still
Дополнительные вызовы getline и звонки в good() после первоначального вызова по-прежнему возвращают true. Простите, я забыл упомянуть об этом в оригинальном посте. – Davey
В своем обновлении вы сказали «пустая строка». Это все еще допустимая строка в отношении 'std :: getline()'. –
Итак, если бы я построил цикл while для извлечения нескольких строк, то какой условный оператор завершит чтение после того, как будут прочитаны все строки из файла. По сути, конец файла был достигнут? Я хочу зациклиться, пока есть текст. Когда текста больше нет, я хочу, чтобы цикл был выполнен. – Davey