Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2008, 06:21   #1
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию fstream.eof() в mingw

Код:
#include <fstream>
#include <iostream>
using namespace std;
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class Per
{
   protected:
      int a;
   public:
      void getData()
      {
         cin >> a;
      }
      void showData()
      {
         cout << endl << a;
      }
};
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
int main()
{
   char ch;
   Per pers;
   fstream file;
   file.open("group.dat", ios::app | ios::out | ios::in | ios::binary);
   do
   {
      cout << "\nPlease enter data: ";
      pers.getData();
      file.write(reinterpret_cast<char*>(&pers), sizeof(pers));
      cout << "Continue?(y/n) ";
      cin >> ch;
   }while(ch=='y');
   file.seekg(0);
   file.read(reinterpret_cast<char*>(&pers), sizeof(pers));
   while(!file.eof())
   {
      pers.showData();
      file.read(reinterpret_cast<char*>(&pers), sizeof(pers));
   }
   cout << endl;
   return 0;
}
данный код компилируется без проблем компилируется в MVC без багов работает.
но после компиляции в mingw последний цикл прогоняется бесконечно:
Код:
   while(!file.eof())
   {
      pers.showData();
      file.read(reinterpret_cast<char*>(&pers), sizeof(pers));
   }
файл существует, создан( и содержит экземпляры класса Per) другой программой при помощи ofstream.

вобщем... какой из компиляторов тут неправ, и как надо изменить код чтобы работало после mingw?
в чем причина?

з.ы. гугль на меня уже плюется.
з.з.ы. нашел только одну аналогичную проблему, там ее решили сменой компилятора :/
>_<

мое мнение что проблема в file.eof()
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 30.09.2008 в 06:31.
alexinspir вне форума Ответить с цитированием
Старый 30.09.2008, 08:00   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

такс... написал чуть иначе, и выяснил, проблема не с iof() а с записью и чтением из файла.
с нетерпением ожидаю помощи гуру.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод Close для ADODataSet вызывает ошибку 'BOF или EOF имеет ...' (mdac 6.0) jane БД в Delphi 1 16.07.2008 07:34
Программа на C++ с использованием fstream Dergard Помощь студентам 2 14.12.2007 05:18