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;
}
}
但结果照旧。
请各位帮忙,不胜感激。
能不能贴出具体的代码,只讲原理容易产生歧义的。
^_^









