提问人:Pankaj Sadhwani 提问时间:8/27/2020 最后编辑:tadmanPankaj Sadhwani 更新时间:8/27/2020 访问量:41
尝试从文件中读取对象,并在正确获取一些记录后,我的程序检测到 eof,留下了许多记录
trying to read objects from a file and after getting some records CORRECTLY my program detects eof,many records are left
问:
我正在尝试将文件中的记录读取到对象中。但是在正确读取某些记录后,程序会检测到文件末尾,即使文件中还有更多记录。我已经使用同一类的对象在文件上写入了记录,但我不明白出了什么问题。
这是我的代码-
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. 我想将所有记录保存到对象数组中,以便对数组进行排序
答:
0赞
john
8/27/2020
#1
如果您要执行二进制 I/O,则必须在二进制模式下打开文件(用于读取和写入)
ifstream fl;
fl.open(filename, ios_base::binary);
评论
std::vector<class_name>
push_back
operator<<
operator>>
read