繁体   English   中英

在C ++文件流中复制静态变量

[英]Copying static variable in C++ file stream

我编写了一个程序,使用c ++文件流删除存储在二进制文件中类对象 在此过程中,我必须将所有对象从一个文件(example.dat)复制到另一个文件(temp.dat)。

我有一个静态变量作为类的一部分,我希望将其与对象一起复制到其中。 但是静态变量不会复制到temp.dat,并且在temp.dat中的值为0,因为静态变量不是任何对象的一部分。

这是我使用的函数和类定义

{                                                  //the problem is in this function
    cout<<"\nSno of record to delete: ";
    int del;
    cin>>del;

        fstream o;
o.open("temp.dat",ios::out|ios::in|ios::binary);

if(!f)
{
    cout<<"File not Found";
    exit(0);
}
else
{f.seekp(0);
    f.read((char*)&dats, sizeof(dats));
    while(!f.eof())
    {
        if(dats.sno!=del)
        {
            o.write((char*)&dats, sizeof(dats));



        }

        f.read((char*)&dats, sizeof(dats));

    }


     }

o.close();
f.close();
remove("date.dat");                       
rename("temp.dat", "date.dat");



return 0; }

类定义

class date{
int d,m,y;
int k;
char dday[10];
char monthn[10];
char name[50];


public:

int sno;
int odd ();
void getdata();
int fsno();
void display();
static int ID; //static variable
}

请提出解决此问题的方法

您不应混淆类和对象。 静态数据成员不是对象的一部分,而是整个类的一部分,并且在所有实例之间共享,因此您必须与单个对象分开存储和读取此类数据。

例如,您可以将其存储在文件开头:

f.seekp(0);

f.read((char*)&date::ID, sizeof(date::ID));
if (!f) { cout<<"File format bad"; exit(0); }
o.write((char*)&date::ID, sizeof(date::ID));

// go on reading objects
f.read((char*)&dats, sizeof(dats));
// ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM