2015-12-08 3 views
0

У меня есть следующий C++ программа:Почему есть пустая строка?

ofstream output("scores.txt"); 
output<<"John"<<" "<<"T"<<" "<<"Smith"<<" "<<90<<endl; 
output<<"Eric"<<" "<<"K"<<" "<<"Jones"<<" "<<103<<endl; 
output.close(); 

ifstream input; 
input.open("scores.txt"); 
string line; 
while (!input.eof()) { 
    getline(input, line); 
    cout<<line<<endl; 
} 
input.close(); 

cout<<"Done"; 

Выход:

John T Smith 90 
Eric K Jones 103 

Done 

Почему пустая строка между Эриком K Jones 103 и делать?

+1

Есть ли пустая строка в конце вашего файла 'scores.txt'? – hlt

+0

@hlt №. Самое смешное, если я удалю endl, вывод будет John T Smith 90Eric K Jones 103Done (все в одной строке). Так что это не может быть проблемой. – Thomas

+0

удалите последний << endl на линии «Эрик». Это создает новую линию, которую ваш цикл поднимает –

ответ

0

Структура ваш цикл, как это:

while (getline(input, line)) { 
    cout<<line<<endl; 
} 

Ваш дубликат линии, потому что путь ваш цикл чтения структурирована, когда вы читаете последнюю строку, eof бит еще не установлен, так как readline удалось. Поэтому вы повторяете еще раз, делая readline, что делает бит eof, затем вы делаете cout<<line<<endl, а последний endl - это ваша дополнительная пустая строка.

Смежные вопросы