对象文件读取?#includeiostream#includefstreamusing namespace stdtypedef struct PAYROLL{char nam
对象文件读取?
#include<iostream>
#include<fstream>
using namespace std;
typedef struct PAYROLL
{
char name[30];
double salary;
}payroll;
int main()
{
payroll pay1;
strcpy(pay1.name,"john");
pay1.salary=8000;
ofstream outfile;
outfile.open("aaa.txt",ios_base::binary|ios_base::app);
outfile.write((char*) &pay1,sizeof(pay1));
outfile.close();
//cout<<sizeof(pay1)<<endl;
payroll pay2;
strcpy(pay2.name,"nake");
pay2.salary=8500;
ofstream outfile2;
outfile2.open("aaa.txt",ios_base::binary|ios_base::app);
outfile2.write((char*) &pay2,sizeof(pay2));
outfile2.close();
//cout<<sizeof(pay2)<<endl;
payroll payout,payout1;
ifstream infile("aaa.txt",ios_base::binary);
while(infile)
{
infile.read((char*)&payout,sizeof(payout));
cout<<payout.name<<" "<<payout.salary<<endl;
infile.read((char*)&payout1,sizeof(payout1));
cout<<payout1.name<<" "<<payout1.salary<<endl;
}
}
为什么输出2遍结果啊,是不是while判断用的不对,还是哪里错了。
[解决办法]
while(infile.read((char*)&payout,sizeof(payout)) && infile.read((char*)&payout1,sizeof(payout1)))
{
cout<<payout.name<<" "<<payout.salary<<endl;
cout<<payout1.name<<" "<<payout1.salary<<endl;
}
