Когда я прекращаю чтение из файла? - PullRequest
2 голосов
/ 10 декабря 2010

Возвращает ли some_file.good() false после прочтения последней записи из файла или после попытки прочтения после этого?То есть я должен написать

while (input.good())
{
    getline(input, line);
    // ...process
}

или

getline(input, line);
while (input.good())
{
    // ...process
    getline(input, line);
}

?

Ответы [ 2 ]

9 голосов
/ 10 декабря 2010

Попытка читать дальше этого ...

Вы можете попробовать:

while(getline(input, line))
{
// do stuff with line
}

Следует добавить, что этот поток реализует operator!, который проверяет флаги, которые вы обычно делаете.Возвращаемое значение getline является входным потоком, но из-за оператора флажки проверяются.

0 голосов
/ 10 декабря 2010

Как уже предлагалось, getline возвращает ноль, когда больше нет строк. Также метод eof() возвращает значение true, если установлен флаг EOF (то есть достигнут конец файла в потоке):

if(input.eof())
{
// end of file
}
...