【发布时间】:2012-09-26 11:02:09
【问题描述】:
我正在使用以下代码将数据写入文件
//temp is class object
fstream f;
f.open ("file", ios::in|ios::out|ios::binary);
for(i=0;i<number_of_employees ;++i)
{
temp.getdata();
f.write( (char*)&temp,sizeof(temp));
}
f.close();
temp 是下面类的对象
class employee
{
char eno[20];
char ename[20];
char desg[20];
int bpay;
int ded;
public:
void getdata();
void displaydata();
}
但是当我使用此代码写入数据时,我发现写入文件的最后一个对象被写入了两次。
我从文件中读取的函数是
fstream f;
f.open ("file", ios::in|ios::out|ios::binary);
while(f)
{
f.read((char*)&temp, sizeof(temp));
temp.displaydata();
}
f.close();
以下显示我的文件被读取到 eof 时
Number :1
Name :seb
Designation:ceo
Basic Pay :1000
Deductions :100
Number :2
Name :sanoj
Designation:cto
Basic Pay :2000
Deductions :400
Number :2
Name :sanoj
Designation:cto
Basic Pay :2000
Deductions :400
这是什么原因,我该如何解决?
【问题讨论】:
-
您不要使用该代码,因为这不是 C++ 代码。请提供真实代码。
-
如果您发布实际代码可能会有所帮助。此外,除了 POD 类型之外,您写入数据的方法可能是不安全的,即使在那里也不是没有问题。