循环序列化的问题,一直很疑惑。
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
CFile devStateFile;
BOOL bSuc=devStateFile.Open("serilized.dat",CFile::modeCreate | CFile::modeWrite);
if (bSuc)
{
CArchive car(&devStateFile, CArchive::store);
CSerDevice *pDev=NULL;
for(int i=0; i<15; i++)
{
pDev=new CSerDevice(42,i,i+1,0,0);
car<<pDev;
}
delete pDev;
CSerDevice c(-1,0,0,0,0);
car<<&c;
car.Close();
devStateFile.Close();
}
////从文件反序列化出来
CFile devStateFil;
BOOL bSuc0=devStateFil.Open("serilized.dat", CFile::modeRead);
if(bSuc0)
{
CArchive car(&devStateFil, CArchive::load);
while(1)
{
CSerDevice *p=NULL;
car >> p;
if(p->m_devID==-1)
{
cout<<p->m_devID<<" "<<p->m_yxID<<" "<<p->m_state<<endl;
break;
}
cout<<p->m_devID<<" "<<p->m_yxID<<" "<<p->m_state<<endl;
delete p;
}
car.Close();
devStateFil.Close();
}
return 0;
}如下类:
class CSerDevice : public CObject
{
public:
CSerDevice();
CSerDevice(int devID,int yxID,int state,int bt,int et);
virtual ~CSerDevice();
int m_devID;
int m_yxID;
int m_state;
time_t m_beginTime;
time_t m_endTime;
};
本文详细介绍了使用C++进行序列化与反序列化的操作过程,通过创建自定义类CSerDevice并对其进行序列化和反序列化,展示了如何在内存中保存和恢复对象状态。
4302

被折叠的 条评论
为什么被折叠?



