正在加载图片...
第13单元文档读写与打印 其中参数ar是一个 CArchive类型的对象,该对象包含一个CFle类型的文件指针 CArchive 对象为读写 CFile(文件类)对象中的可序列化数据提供了一种类型安全的缓冲机制。通常 CFile类对象代表一个磁盘文件 CArchive类的成员函数 StOring()用于通知 Serialize()函数是需要写入还是读取序 列化数据。如果数据要写入(Save或 Save as), StOring()返回布尔值TRUE;如果数据 是被读取(Open),则返回 FALSE CArchive类对象使用重载的插入(<<)和提取(>>)操作符执行读和写操作。这种方 式与cin和cou中的输入输出流非常相似,只是这里处理的是对象,不象cin和cout那样, 处理的是ASCI字符串 例13-1序列化。如果例12-1的吹泡泡程序使用一般的数组存放泡泡数据(参看例9-1 的程序) CRect m rectBubble MAX BUBBLE] 为其文档类重新设计 Serialize()函数。 说明:按例12-1的方法建立项目和输入源代码,但将文档类中的泡泡数据改为以 上两行的形式。修改文档类的 Serialize()函数,代码如下 程序 //序列化函数 void CMy Doc:: Serialze(CArchive& ar) if(ar. IsStoringo ar < m nUbble Count for (int i=0: i<m nUbble Count: i++) ar < m rectBubble[i] for (int i=0: i<m nBubbleCount: i++) ar >>m rect Bubble[il 分析:在编写序列化函数时,一定要注意写入顺序要和读出顺序一一对应。在本例 中,先写入数据成员 m nBubblecount,再写入泡泡数组 m rect Bubble,那么在读出时也要第 13 单元 文档读写与打印 - 257 - } } 其中参数 ar 是一个 CArchive 类型的对象,该对象包含一个 CFile 类型的文件指针。CArchive 对象为读写 CFile(文件类)对象中的可序列化数据提供了一种类型安全的缓冲机制。通常 CFile 类对象代表一个磁盘文件。 CArchive 类的成员函数 IsStoring()用于通知 Serialize()函数是需要写入还是读取序 列化数据。如果数据要写入(Save 或 Save As),IsStoring()返回布尔值 TRUE;如果数据 是被读取(Open),则返回 FALSE。 CArchive 类对象使用重载的插入(<<)和提取(>>)操作符执行读和写操作。这种方 式与 cin 和 cout 中的输入输出流非常相似,只是这里处理的是对象,不象 cin 和 cout 那样, 处理的是 ASCII 字符串。 [例 13-1] 序列化。如果例 12-1 的吹泡泡程序使用一般的数组存放泡泡数据(参看例 9-1 的程序): CRect m_rectBubble[MAX_BUBBLE]; int m_nBubbleCount; 为其文档类重新设计 Serialize()函数。 说 明:按例 12-1 的方法建立项目和输入源代码,但将文档类中的泡泡数据改为以 上两行的形式。修改文档类的 Serialize()函数,代码如下。 程 序: // 序列化函数 void CMyDoc::Serialze(CArchive& ar) { if(ar.IsStoring()) { ar << m_nBubbleCount; for(int i=0; i<m_nBubbleCount; i++) ar << m_rectBubble[i]; } else { ar >> m_nBubbleCount; for(int i=0; i<m_nBubbleCount; i++) ar >> m_rectBubble[i]; } } 分 析:在编写序列化函数时,一定要注意写入顺序要和读出顺序一一对应。在本例 中,先写入数据成员 m_nBubbleCount,再写入泡泡数组 m_rectBubble,那么在读出时也要
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有