У меня проблема с выводом информации с файла в консоль. Суть задачи такова:
Есть небольшая менюшка, и пользователь выбирает либо записать в текстовый файл, либо же считать информацию с файла и красиво вывести в консоль. Когда он выбирает запись в файл, то записывает туда имя, день и месяц рождения. После этого, если он выбирает вывести в консоль информацию с этого файла, то все работает нормально, и в консоль выводится в виде таблицы его имя, день и месяц рождения. Но если же он хочет записать еще какое-то имя, день и месяц, и потом обратно вывести это в консоль, то получается вечный цикл.
Я не понимаю, почему так происходит. Надо сделать так, чтобы если в файле не одна запись имени, дня и месяца, а больше, то все выводилось красиво одно под другим, как таблица. Помогите исправить ошибку. Вот кусок кода:
if (choice == 2) //ЗАПИСЬ В ФАЙЛ
{
string name;
int day;
int month;
string path = "MyFile.txt"; // путь к файлу
cout << "\n Enter name: ";
cin >> name;
cout << "\n Enter day: ";
cin >> day;
cout << "\n Enter month: ";
cin >> month;
fstream fout(path, ios::app);
if (!fout.is_open())
{
cout << "\nWe couldn't open the file.";
}
else
{
fout.setf(ios::left);
fout.width(9);
fout << name << ' ';
fout.width(9);
fout << day << ' ';
fout.width(9);
fout << month << ' ';
fout.width(9);
fout << day * month << endl; // в задачи нужно еще день и месяц перемножить
fout.close();
}
}
if (choice == 1) //ЧТЕНИЕ С ФАЙЛА И ВЫВОД В КОНСОЛЬ
{
string name;
int day;
int month;
string path = "MyFile.txt"; // путь к файлу
ifstream fin;
fin.open(path);
if (!fin.is_open())
{
cout << "\nWe couldn't open the file.";
}
else
{
cout << setw(9) << "Name" << setw(9) << "Day" << setw(9) << "Month" << endl << endl;
while (!fin.eof())
{
fin >> name;
fin >> day;
fin >> month;
if (!fin.eof())
{
cout.width(10);
cout << name;
cout.width(10);
cout << day;
cout.width(10);
cout << month;
cout << endl;
}
}
}
fin.close();
}