我们保存一些文本内容可以很简单的保存成一个文件就行了.但如果要把一些类对象信息保存起来,然后读取时用那些信息初始化一个类对象就比较复杂了.MFC提供了一个叫序列化的功能.可以把一个对象信息转化成二进制文件(或者xml文件)保存起来.

下面举一个简单的例子,假如有类CArwen,实例化一个对象,然后序列化该对象.最后反序列化,把保存的值再读出来初始化给一个对象.

1.先定义类CArwen

//头文件

class CArwen: public CObject

{

DECLARE_SERIAL(CArwen)

public:

virtual void Serialize(CArchive& ar);

int age;

CString name;

};

//cpp文件

IMPLEMENT_SERIAL(CArwen,CObject,1) //1是版本号,可以随便指定一个数值

void CArwen::Serialize(CArchive& ar)

{

if(ar.IsStoring()){ //序列化,保存信息.CArchive::store与此对应

ar<<age;

ar<<name;

}else //反序列化,读取信息

{

ar>>age;

ar>>name;

}

}

2.测试程序

#include "CArwen.h"

CString filePath = _T("D:\\app\\Arwen.dat") ;  //序列化把对象信息保存在该文件中

void TestSerializeArwen() //保存信息

{

CArwen arwen;

arwen.age = 24;

arwen.name = _T("weiwenhp);  //如果没用unicode,就不用_T

CFile fi;

fi.Open(filePath , CFile::modeCreate|CFile::modeWrite); //如果文件不存在则创建一个,否则只是往文件写数据

CArchive ar(&fi, CArchive::store);

awen.Serialize(ar);   //序列化对象

ar.Close();

fi.Close();

}

void TestReadSerilizedArwn() //读取信息

{

CArwen arwen;

CFile fi;

fi.Open(filePath , CFile::Read);

CArchive ar(&fi, CArchive::load);

awen.Serialize(ar); //反序列化对象

ar.Close();

fi.Close();

}

MFC序列化(serial)简单例子相关推荐

  1. VC API常用函数简单例子大全(1-89)

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

  2. VC API常用函数简单例子大全

    VC API常用函数简单例子大全 http://hi.baidu.com/tag/vc%20api%E5%87%BD%E6%95%B0/feeds 系统API查询 http://www.vbgood. ...

  3. webpack入门之简单例子跑起来

    webpack入门之简单例子跑起来 webpack介绍 Webpack是当下最热门的前端资源模块化管理和打包工具,它可以将很多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源,还可以将按需加载 ...

  4. 图片上传(加水印、缩略图、远程保存)的简单例子

    图片上传(加水印.缩略图.远程保存)的简单例子(应用于51aspx.com) 该源码下载地址:http://51aspx.com/CV/ImageUpload 今天看到xiongeee发的文章使用使用 ...

  5. java hashtable import,Hashtable的一个简单例子

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是关于Hashtable的简单例子,谁知道别的遍历Hashtable的方法,请回复! package no1; import java.util.En ...

  6. SAP MM采购定价过程的一个简单例子

    SAP MM采购定价过程的一个简单例子 本文以一个简单的例子阐述了SAP MM模块中采购定价的基本原理.本例中,假定采购订单里输入的是含税采购价,然后系统自动计算出物料最终的采购价格(含税价-税额=采 ...

  7. .net中使用反射的简单例子

    说明:由于工作原因,本人使用反射的机会不是很多,所以没有必要为了炫耀技术而使用这种技术,不过今天有人问到这方面的问题,所以做了一个简单例子,供初学者参考,代码如下: using System; usi ...

  8. linux下Makefile中包含有shared library动态链接库文件时候的简单例子

    如果不知道什么是makefile,可以首先看我的另一篇博客: linux下Makefile的简单例子及解释 http://www.cnblogs.com/lihaozy/archive/2012/08 ...

  9. java 国际化例子_JavaSE 国际化 简单例子

    ①在src下添加两个文件: base_zh_CN.properties Test=\u8fd9\u662f\u4e2d\u6587 base_en_US.properties Test=english ...

最新文章

  1. 行人检测与重识别!SOTA算法
  2. 赶考在线执业药师,7-8月提分策略,化繁为简
  3. Python3网络爬虫快速入门实战解析(一小时入门 Python 3 网络爬虫)
  4. DIP第二章习题解答
  5. pads元件类型如何修改_pads logic元件库修改了,怎样更新到原理图
  6. Linux(CentOS)下安装tesseract-ocr以及配置依赖leptonica
  7. BoomBeach海水效果实现
  8. java零基础Ⅰ-- 1.java 概述
  9. 使用QQ推广作为客服或留言(转载)
  10. android 美团拆包,如何进行拆包合包操作?
  11. 微信小程序base64图片转换临时链接
  12. 关于子类重写父类方法的问题
  13. GRU(Gate Recurrent Unit,门控循环单元)结构
  14. Direct2D教程(一)
  15. wow服务器硬件,魔兽架设技术wow服务器配置文件详细中文说明攻略
  16. git的一些基本命令总结
  17. Linux都应用在哪些领域?发展如何?
  18. 【UEFI实战】DEBUG
  19. C语言刷题(8)——“C”
  20. nextCloud集成至APP端可行性报告

热门文章

  1. 织梦DEDECMS网站留言板提交时验证码错误返回空白页的解决办法
  2. sql server 数据库还原
  3. div添加html链接,DIV添加超链接小记
  4. c语言非法字符有哪些,98行的四则计算器.(支持括号)加入了非法字符的检测
  5. mysql 查询语句性能优化
  6. 鸿蒙思维和小央美,中心路汝南路站附近艺术培训
  7. 【Git、GitHub、GitLab】四 Git文件重命名的简单方法以及使用git log查看版本演变历史
  8. Nginx----实现https站点
  9. 架构师成长之路:如何保证消息队列的高可用
  10. Android VideoView无法播放网络视频