簡體   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