文件流

来源:百度文库 编辑:神马文学网 时间:2024/04/24 03:50:41

 

13.文件流

#include

#include

#include

#include

 

class CFile

{

private:

       char *fname;

public:

       bool Save(int *d,int n);

       int Load(int *p);

       CFile() {fname=NULL;}

       ~CFile() {delete []fname;}

       void SetFname(char *r);

};

 

void CFile::SetFname(char *f)

{

       if(fname) delete []fname;

       fname=new char[strlen(f)+1];

       strcpy(fname,f);

}

 

 

bool CFile::Save(int *d,int n)

{

       ofstream fp;

       int i;

       fp.open(fname);

       if(!fp) return false;

       fp<

       fp.close();

       return true;

}

 

int CFile::Load(int *p)

{

       ifstream fp;

       int i,n;

       fp.open(fname,ios::nocreate);

       if(!fp) return 0;

       fp>>n;

       for(i=1;i<=n;i++)

       {

              p++;

              fp>>*p;

       }

       fp.close();

       return n;

}

 

void main()

{

       CFile f;

       int GetData(int *d);

       void DisplayData(int *d,int n);

       int n,d[1001];

       char s[41];

       n=GetData(d);

       DisplayData(d,n);

       do{

              cout<<"请输入文件名:";

              cin>>s;

       }

       while(!s[0]);

       f.SetFname(s);

       if(!f.Save(d,n)) return;

       n=f.Load(d);

       if(n>0) DisplayData(d,n);

 

}

 

int GetData(int *d)

{

       int i,n;

       cout<<"生成多少项数据?";

       cin>>n;

       srand(time(NULL));

       for(i=1;i

       return n;

}

 

void DisplayData(int *d,int n)

{

       int i;

       cout.setf(ios::left);

       for(i=1;i

       {

              cout.width(6);

              cout<

              if(i%10==0) cout<

       }

       cout<

}

运行结果如图: