| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:CArchive的使用
取消只看楼主 加入收藏
Qingtengguhe
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-1-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
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; 
} 
} 

但结果照旧。

请各位帮忙,不胜感激。

能不能贴出具体的代码,只讲原理容易产生歧义的。

^_^
搜索更多相关主题的帖子: CArchive 
2010-01-03 09:29
快速回复:CArchive的使用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019945 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved