Почему я получаю дополнительную итерацию (дополнительная строка), когда этот код завершается? Должна ли быть дополнительная новая линия в EOF? Я бы предпочел не добавлять лишние/специальные символы, чтобы отметить EOF.Файловый эхо-цикл с дополнительной финальной итерацией
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
ifstream infile("dictionary.txt"); // one word per line
string text;
while(infile){
infile >> text;
cout << text << endl;
}
infile.close();
return 0;
}
Можете ли вы подтвердить, что «dictionary.txt» не имеет новую строку в конце ? Потому что ваш код, кажется, прямое чтение, выписывание. – Nasir
@ nr81: Это стандартный анти-шаблон для чтения файла. Очистка eof не проверяется после чтения (с помощью оператора >>), тогда последняя строка будет напечатана дважды. См. Ответы ниже для правильного шаблона для чтения файла. –