C++ файловый ввод/вывод
Возник вопрос. Вот я написал такой код для заполнения файла строками, что вводится с клавиатуры.
#include <fstream>
#include <string>
using namespace std;
int main()
{
int numberOfStrings;
string str;
ofstream file("1.txt");
cin >> numberOfStrings;
cin.ignore(1);
for(int i=0; i<numberOfStrings; i++){
getline(cin, str);
file << str << endl;
}
ifstream in("1.txt");
while(!in.eof()){
in >> str;
cout << str << endl;
}
return 0;
}
вроде как все просто: считываю строчки, записываю в файл, а потом считываю файл. Вопрос: почему последняя строка читается дважды? Просто если не послать при записи в файл последний endl, то такого эффекта не наблюдаю. Зато предпоследняя последняя строка дублируетсяили вообще не считывается(в зависимости от того, как считываю:getline(in, str) или in >> str) Так же если просто считывать через getline(in, str), а не через in >> str(и не менять запись в файл), то выводится пустая строка. Почему такой расколбас?)