#include<bits/stdc++.h>
#include
#include
using namespace std;
class A
{
public:
A(string name,int haoma,int nian);
int put();
~A();
A();
A operator =(const A & d)
{
name=d.name;
haoma=d.haoma;
nian=d.nian;
};
friend ostream &operator<<(ostream&out,A&p)
{ out<<p.name<<" “<<p.haoma<<” "<<p.nian; }
friend istream & operator >> (istream & in ,A & c)
{
in>>c.name>>c.haoma>>c.nian;
return in;
};
private:
string name;
int haoma;
int nian;
} ;
A::A(){}
A::~A(){}
A::A(string name,int haoma,int nian)
{
this->name=name;
this->haoma=haoma;
this->nian;
}
class B
{ A aa;
int n;
A l[100];
public:
B();
B(int u);
gou(int u);
out();
in(); ~
B();
};
B::B(int u)
{ n=u;
}
B::B(){}
B::~B(){}
B::out()
{ ofstream out;//创建流对象,用于将数据从内存输入到文件中
out.open(“o.txt”/文件地址/,ios::out/文件打开方式/);//打开文件 ,ios::out(用于输出,文件以输出形式打开,如果文件存在,打开文件,并清空原文件的内容,若不存在,创建文件);
if (!out.is_open())//判断文件是否打开成功,也可用if(!out),但是fstream类对象不能使用
return 0 ;
for(int t=0;t<=n;t++)
out<<l[t]<<endl;
out.close();//关闭文件
/* ofstream out(“d.txt”);//可省略ios::out
ofstream out;
char A[23];
cin>>A;
op.open(A,ios::out)//可通过键盘输入文件路径信息,随时打开指定文件
ofstream out;
string B;
cin>>B;
out.open(B.c_str(),ios::out)//不能直接使用字符串对象,用c.str()把字符串对象转化为字符数组 */
}
B::in()
{ ifstream inf;//创建流对象,用于将数据从文件输入到内存中
inf.open (“o.txt”,ios::in);//打开文件,ios::in(文件存在打开,不存在打开失败)
int num;
num=0;
inf>>l[num];
cout<<l[num];
while(!inf.eof())//判断是否读到文件尾
{ num++;
inf>>l[num];
cout<<l[num];
}
inf.close();
}
B::gou(int u)
{ n=u;
for(int i=0;i<=n;i++)
{ cin>>aa;
l[i]=aa;
};
}
int main()
{ B mm;
mm.gou(2);
mm.out();
mm.in();
}
补充:
1 在将数据输入文件中,行末不能有空格
2 ios::app 以追加的方式打开文件,用于文件的写操作,如果文件不存在,创建文件,如果存在,则不会删除原文件内容,主要用于在文件尾添加数据
二进制文件
1 ios::binary
2 用写write()函数进行写操作,read()读操作
3
#include<fstream.h>
int main(){
ofstream out(“f:\test.dat”,ios::binary/文件打开方式/);
if (!out)
{return 1; }
int i=12340;
double num=100.45;
out.write((char *) &i/取出i的首地址,转换成字符类型/,sizeof(int)/*求字节数);
out.write((char *) &num,sizeof(double));
out.close();
ifstream in(“f:\test.dat”);
if (!in) {return 1; }
int j;double d;
in.read((char *)&j,sizeof(int));
in.read((char *)&d,sizeof(double));
cout<<j<<" "<<d<<endl;
in.close();return 0; }
4 数据类型必须定长