例13.12 将执行例13.11程序时存放在磁盘文件中的二进制形式的数据读入内存并在显示器上显示。
法一:
#include<iostream>
#include<fstream>
using namespace std;
struct student
{
char name[20];//string name只是浅拷贝,只有指针的值,没有指针指向的值;char name[20]指针的值和指针指向的值都有
int num;
int age;
char sex;
};
int main()
{
student stud[3];
int i;
ifstream infile("stud.dat",ios::binary);
if(!infile)
{
cerr<<"open error!"<<endl;
abort();
}
for(i=0;i<3;i++)
{
infile.read((char*)&stud[i],sizeof(stud[i]));
}
infile.close();
for(i=0;i<3;i++)
{
cout<<"NO."<<i+1<<endl;
cout<<"name:"<<stud[i].name<<endl;
cout<<"num:"<<stud[i].num<<endl;
cout<<"age:"<<stud[i].age<<endl;
cout<<"sex:"<<stud[i].sex<<endl<<endl;
}
return 0;
}
法二:
#include<iostream>
#include<fstream>
using namespace std;
struct student
{
char name[20];//string name只是浅拷贝,只有指针的值,没有指针指向的值;char name[20]指针的值和指针指向的值都有
int num;
int age;
char sex;
};
int main()
{
student stud[3];
int i;
ifstream infile("stud.dat",ios::binary);
if(!infile)
{
cerr<<"open error!"<<endl;
abort();
}
infile.read((char*)&stud[0],sizeof(stud));
infile.close();
for(i=0;i<3;i++)
{
cout<<"NO."<<i+1<<endl;
cout<<"name:"<<stud[i].name<<endl;
cout<<"num:"<<stud[i].num<<endl;
cout<<"age:"<<stud[i].age<<endl;
cout<<"sex:"<<stud[i].sex<<endl<<endl;
}
return 0;
}