# include <iostream.h>
# include <fstream.h>
# include <string.h>
class city
{
char cname[10];
char cno[4];
public:
city() {};
city(char m[],char n[])
{
strcpy(cname,m);
strcpy(cno,n);
}
void disp()
{
cout<<"城市:"<<cname<<"区号:"<<cno<<endl;
}
int find(char n[])
{
if (strcmp(cno,n)==0)
return 1;
else
return 0;
}
};
void main()
{
fstream f;
f.open("city.dat",ios::trunc|ios::in);
city s,s1("北京","010"),s2("上海","021"),s3("天津","022");
f.write((char *)&s1,sizeof(city)); //将三个对象写入到city.dat文件中
f.write((char *)&s2,sizeof(city));
f.write((char *)&s3,sizeof(city));
f.seekg(0,ios::beg);
char n[4];
cout<<"输入区号:";
cin>>n;
for(int i=0;i<3;i++) // 搜索区号
{
f.read((char *)&s,sizeof(s));//......什么意思?
if (s.find(n))
{
s.disp();
break;
}
}
if (i==3)
cout<<"输入的区号未找到!"<<endl;
f.close();
}
这个程序中我有两个地方不太明白,分别写在下面。
1:f.seekg(0,ios::beg);的意思是否为将读指针移到距离文件开头位置为0的地方,也就是读指针移到文件头?
2:city s定义的时候并未像s1,s2,s3一样有真实意思,对象s不含任何数据,那么如何能够利用f.read((char *)
&s,sizeof(s));读数据并和char n[4]建立联系呢?
[此贴子已经被作者于2007-7-17 0:43:45编辑过]