Хорошо, вот объяснение, которое вы, надеюсь, поймете.Ваш код должен работать нормально, если файл, о котором мы говорим, не заканчивается переводом строки.Но что, если это произойдет?Скажем, это выглядит так:
"line 1"
"line 2"
""
Или как последовательность символов:
line 1\nline 2\n
Этот файл содержит ТРИ строки - последняя пустая, но она есть.После двойного вызова getline вы прочитали все символы из файла.Третий вызов getline скажет "упс", конец файла, извините, больше нет символов, поэтому вы увидите только две строки текста.