循环序列化的问题,一直很疑惑。
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;
};