Я дал ответ, который я хотел бы проверить действительность потока каждый раз через цикл здесь.
Мой оригинальный код использовал good
и выглядел примерно так:
ifstream foo("foo.txt");
while (foo.good()){
string bar;
getline(foo, bar);
cout << bar << endl;
}
Я тут же указал и сказал, чтобы никогда не тестировать good
. Очевидно, это то, что я не понял, но я хочу правильно выполнять ввод/вывод файлов.
Я проверил код с несколькими примерами и не смог сделать код good
-testing.
Сначала (это правильно напечатано, заканчивается новой строкой):
bleck 1
blee 1 2
бла
заканчивается в новой строке
Второе (это правильно напечатано, заканчивается последней строкой):
bleck 1
blee 1 2
blah
это не заканчивается новой строкой
Третий был пустой файл (это правильно напечатано, одна новая строка.)
Четвертый - отсутствующий файл (это правильно ничего не печатало.)
Может ли кто-нибудь помочь мне с примером, который демонстрирует, почему good
-testing не нужно делать?