CArchive的使用
首先向大家道一声新年好!CArchive的使用我的代码如下:能不能帮我运行一下?小弟实在是无语了!!!!!!!!!!
win32下:
程序代码:
main: #include <afx.h> #include <iostream.h> #include "CPeron.h" void main() { CFile oFile("persons.txt",CFile::modeCreate|CFile::modeWrite); CArchive oar(&oFile, CArchive::store); int i,j; for ( i=0;i<10;i++) for( j=0;j<10;j++) { if (j%2==0) { CPeron person("a",i,j); oar << &person; } else { CPeron person("b",i,j); oar << &person; } } oar.Close(); oFile.Close(); CFile iFile("persons.txt", CFile::modeRead); CArchive iar(&iFile, CArchive::load); CPeron *p1; for(int k=0;k<50;k++) { iar >> p1; printf("%s,%d,%d\n",(CString)p1->name,(int)p1->i,(int)p1->j); } } CPeron.h: #include <afx.h> class CPeron : public CObject { DECLARE_SERIAL(CPeron) public: CString name; int i,j; public: CPeron(); CPeron(CString name,int i, int j); virtual void Serialize(CArchive& ar); }; CPeron.cpp: #include <iostream.h> #include "CPeron.h" IMPLEMENT_SERIAL(CPeron, CObject, 1) CPeron::CPeron() { } CPeron::CPeron(CString name,int i, int j) { this->name=name; this->i=i; this->j=j; } void CPeron::Serialize(CArchive& ar) { if (ar.IsStoring()) { ar << this->name<<this->i<<this->j; } else { ar >> this->name>>this->i>>this->j; } }
为什么我的输出是:
a,0,0
b,0,0
......
......
交替各25次????
有一个大侠在我的以前的帖子上说我没有给CArchive分内存,但是我看了MSDN,CArchive默认下有4096byte不是吗??
我也按照他说的改变了一下main中的CPeron对象的定义方式:
如下:
程序代码:
for ( i=0;i <10;i++) for( j=0;j <10;j++) { if (j%2==0) { CPeron *m_person1=new CPeron("a",i,j); oar < < m_person1; delete []m_person1; } else { CPeron *m_person2=new CPeron("b",i,j); oar < < m_person2; delete []m_person2; } }
但结果照旧。
请各位帮忙,不胜感激。
能不能贴出具体的代码,只讲原理容易产生歧义的。
^_^