尝试从文件中读取对象并正确获取一些记录后,我的程序检测到eof,剩下许多记录

问题描述

我正在尝试将文件中的记录读入对象。但是即使正确读取了一些记录,程序仍会检测到文件结尾,即使文件中还有更多记录。我已经使用相同类的对象将记录写在文件上,但我不明白出了什么问题。

这是我的代码-

    int main()
         {
            long int n=0;
            class_name objt[100];
            ifstream fl;
            fl.open(filename);
            cout<<"Scanning file"<<endl<<"Please Wait"<<endl;
            while(true)
              {
                  fl.read((char*)&objt[n],sizeof(objt[n]));
    
                  if(fl.eof())
                   {
                      cout<<endl<<"END OF FILE"<<endl<<"Press any key to continue";
                      cin.get();
                      break;
                   }
                  n++;
             }
             fl.close();
             cout<<endl<<"Scanning Complete!"

这是我正在使用的课程-

class class_name
         {
           public:
           char name[20];
           double cn ;
           int code;
           int unit;
        };

P.S。我想将所有记录保存到对象数组中,以便对数组进行排序

解决方法

如果要执行二进制I / O,则必须以二进制模式打开文件(用于读取和写入)

        ifstream fl;
        fl.open(filename,ios_base::binary);