孙鑫第13课笔记 文档与串行化

本文详细介绍了MFC中的文档串行化思想,包括CArchive类的使用、如何修改文档标题、文档对象的序列化过程以及可串行化类的实现步骤。通过示例代码展示了如何在文件读写中应用CArchive,以及如何处理CObArray中的对象串行化和内存管理。同时,讨论了在文档对象数据销毁时如何避免内存泄漏。
摘要由CSDN通过智能技术生成

serialization是一种思想,这个思想是——对象是连续的,这意味着我们可以在程序退出时把它们保存到磁盘上,程序重新运行是又恢复它们。(摘自VC++6.0技术内幕)

 

 

 

1.CArchive类


 

CArchive类没有基类,它的作用类似于一个二进制流,用于文件的输入输出;

它也重载了操作符"<<",">>",用法和cout和cin一样,但CArchive不仅可以输出基本类型的数据,还可以输出CObject类型的对象(包括从CObject中派生的类型)

CArchive类使用实例:(结合文件对话框的使用)

void CGraphicView::OnFileRead()
{
 // TODO: Add your command handler code here
       CFileDialog fileDlg(TRUE);                               //创建一个文本对话框,TRUE表示用于文本打开
       fileDlg.m_ofn.lpstrTitle="我的文件打开对话框";
       fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)/0*.txt/0All Files(*.*)/0*.*/0/0";//这里注意过滤器的格式
 
       if(IDOK==fileDlg.DoModal())
      {
              CFile file(fileDlg.GetFileName(),CFile::modeRead);
              CArchive ar(&file,CArchive::load);
              int i;
              float f;
              CString str;
              CString fstr;
              ar>>i>>f>>str;
              fstr.Format("%d,%f,%s",i,f,str);
              MessageBox(fstr);
        }
}

 

void CGraphicView::OnFileWrite()
{
 // TODO: Add your command handler code here
     CFile file("1.txt",CFile::modeWrite|CFile::modeCreate);
     CArchive ar(&file,CArchive::store);
     int i=1;
     float f=11.1f;
     CString str="MFC13";
     ar<<i<<f<<str;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值