|
|
|
[VC++学习]《精通MFC》——第四章(V) 读书笔记
|
|
打开标志指定要为文件设置的权限。如果成功的打开文件,则Open函数返回TRUE,如果未能打开指定的文件,则返回FALSE。
关闭CArchive对象
当完成向CArchive对象存储数据或从该对象中加载数据时,关闭该对象。虽然CArchive对象会自动关闭文档,好的做法是显式执行,因为这使得由错误恢复更为容易:
Archive.Close();
theFile.Close();
“<<”和“>>”运算符
CArchive提供“<<”和“>>”运算符,用于向文件中写入简单的数据类型和CObjects以及从文件中读取它们。
CArchive对象的“<<”和“>>”支持的数据类型
CObject
SIZE和CSize
Float
WORD
CString
POINT CPoint
DWORD
BYTE
RECT CTect
Double
LONG
CTime CTimeSpan
Int
COleCurrency
COleVariant
COleDateTime
COleDateTimeSpan
CArchive的“<<”和“>>”运算符总是返回CArchive对象的引用,该引用为第一个操作数。因此可以链接运算符。
CArchive的“>>”运算符基于由文档先前写到文件的CRuntimeClass信息构造内存中的CObject。因此,是使用CArchive的“<<”和“>>”运算符,还是调用Serialize,取决于是否需要加载文档,基于先前存储的CRuntimeClass信息以动态的重新构造对象。在下列情况下使用Serialize函数:
反序列化对象时,预先知道对象的确切的类。
反序列化对象时,已为其分配了内存。
总之,如果可序列化的类将嵌入的CObject定义为成员,则不应使用该对象的CArchive的“<<”和“>>”运算符,而应调用Serialize函数。此外,如果可序列化的类将指向CObject(或从CObject派生的对象)的指针定义为成员,但在自己默认的构造函数中将其构造为其他对象,则也应调用Serialize。
对象序列化实例
演示代码: P120 |
|
00oo.. 发表于 2005/11/13 10:16:09
|
|