C++学习笔记:文档与串行化

2014-11-16 10:00:25 · 作者: · 浏览: 26

  本章首先介绍了一种新的读写文件方式,使用MFC提供的CArchive类来实现。可以利用CArchive类将对象数据保存到永久设备上。这样即使应用程序关闭,再次启动后仍然可以从磁盘上读取对象数据,然后在内存中重构相应的对象。让数据持久性的过程成为串行化或序列化。


  CArchive对象不仅可以处理基本类型的数据,还可以处理CObject类的派生对象。CArchive类重载了提取(>>)和插入(<<)操作符。通过这些重载的函数,可以利用CArchive对象完成对文件的读写操作。


  CArchive构造函数的声明如下:


  1 CArchive( CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL );


  pFile:指向文件对象的指针,该文件对象是持久数据的来源或目的地;


  nMode:文件对象的标示符(load,store)读取还是存储;


  CArchive类写入数据的实例:


  01 void CFileView::OnFileWrite()


  02 {


  03 CFile file("7.txt",CFile::modeCreate|CFile::modeWrite);


  04 CArchive ar(&file,CArchive::store);


  05 int i=1;


  06 char ch='1';


  07 float f=1.3f;


  08 CString str="www.colsir.com";


  09 ar<


  10 }


  完成写入操作之后,用记事本打开7.txt,发现基本上都是乱码。这是因为CArchive对象是一种二进制流。


  CArchive类读取数据的实例:


  01 void CFileView::OnFileRead()


  02 {


  03 CFile file("7.txt",CFile::modeRead);


  04 CArchive ar(&file,CArchive::load);


  05 int i;