文档详情

visual c从入门到精通章串行化.pdf

发布:2025-04-27约1.57千字共3页下载文档
文本预览下载声明

串行化基础

在介绍串行化之前,先来了解一下与串行化有关的CArchive类。CArchive类简化了对文件的读写操作,它能够将对象的数据永久地

保留到磁盘文件中,并能够从磁盘文件中恢复对象。在CArchive类中重载了C++的“”和“”运算符,其中“”用于将

CObject类型或基本类型的数据到文件中,“”则用于从文件中加载CObject或基本类型的数据。下面介绍CArchive类的主要

方法。

1.CArchive

该方法是CArchive类的构造函数。

语法格式如下:

CArchive(CFile*pFile,UINTnMode,intnBufSize=4096,void*lpBuf=NULL);

tpFile:文件对象指针,对象的数据将在该文件中。nMode

t:表示对象是加载数据还是保存数据。为CArchive::load,表示从存档对象中加载数据;为CArchive::store,表示

对象到存档对象中;为CArchive::bNoFlushOnDelete,表示存档对象在释放时自动调用Flush方法。

tnBufSize:缓冲区大小,默认为4096个字节。lpBuf:一

t个可选的指针,指向用户提供的nBufSize大小的缓冲区。如果未指定该参数,存档对象从应用程序的局部堆中分

配缓冲区,并且在对象释放时释放缓冲区。如果用户指定了该缓冲区,在对象释放后需要手动释放该缓冲区。

2.Read

该方法用于从存档对象中数据。

语法格式如下:

UINTRead(void*lpBuf,UINTnMax);

tlpBuf:接收数据的缓冲区。

tnMax:以字节为单位表示数据的大小。

3.Write

该方法用于向存档对象中写入数据。

语法格式如下:

voidWrite(constvoid*lpBuf,UINTnMax);

tlpBuf:写入数据的缓冲区。

tnMax:以字节为单位表示写入数据的大小。

4.IsLoading

该方法用于确定存档对象是否被加载数据。

编写串行化类

15.2.1节介绍了使用CArchive类进行文件操作,本节将介绍使用CArchive类实现类的串

行化。要设计一个串行化类,通常需要进行5个步骤。首先,用户定义的类必须派生于

CObject或CObject的子类;然后重载Serialize方法,用以保存对象的数据成员到

CArchive对象以及从CArchive对象载入对象的数据成员的状态;接着在类体中加入

DECLARE_SERIAL宏,这是串行化类所必需的;然后为类提供一个无参数的构造函数,

也就是默认构造函数;最后在类的源文件中加入IMPLEMENT_SERIAL宏。下面通过一个

实例来介绍如何编写串行化类。

【例15.5】编写串行化类。(实例位置:光盘\TM\sl\15\5)

Thankyou

还有什么疑问可以到提出

也可以以发送邮件到

显示全部
相似文档