MFC序列化及反序列化变量

你说什么最难受,是相爱的人见不了面,还是最爱的人在别人身边。。。

 

----  网易云热评

 

一、作用

以二进制流(数据流 )形式,读写硬盘文件,效率高,速度快

二、使用方法

1、写(序列化)数据

定义ar对象,ar将维护一块buff。

依次序列化每一个数据到ar维护的buff中。

如果buff空间不足,将ar维护buff中的数据存入硬盘文件,同时重置当前指针。

当关闭ar对象时,将ar维护的buff中的剩余数据存入硬盘文件。

void Store() {       CFile file;       //创建并打开文件       file.Open("e:/a.txt", CFile::modeCreate | CFile::modeWrite);              //定义归档类对象,ar将维护一块buff       CArchive ar(&file, CArchive::store, 4096);       //读(反序列化、加载)写(序列化、存储)操作       long age = 18;       ar << age;       float score = 88.5;       ar << score;       CString name = "zhangsan";       ar << name;       //关闭归档类对象和文件       ar.Close();       file.Close();}

2、读(反序列化)数据

定义ar对象,ar将维护一块buff。

当反序列化第一个数据时,需要将硬盘文件中数据尽可能多的读入ar维护的buff中,然后反序列化第一个数据

当反序列化后续数据时,直接从ar维护buff中读取

当关闭a对象时,将ar维护的buff释放

void Load() {       CFile file;       file.Open("e:/a.txt", CFile::modeRead);      //将文件数据全部读入ar维护buff中       CArchive ar(&file, CArchive::load, 4096);       //再从缓存区汇中读取        long age;       ar >> age;       float score;       ar >> score;       CString name;       ar >> name;       printf("age=%d, score=%f, name=%s\n", age, score, name);       ar.Close();       file.Close();}

 

3、调用

int main() {       Store();       Load();       return 0;}

4、运行结果:

 

三、CArchive数据结构

    

class CArchive    {    enum Mode { store = 0, load = 1..};    BOOL m_nMode;   //访问方式    int m_nBufSize; //buff的大小    CFile* m_pFile; //操作的文件的对象    BYTE* m_lpBufCur;  //当前指针    BYTE* m_lpBufMax;  //尾指针    BYTE* m_lpBufStart;//开始指针    };

 

欢迎关注公众号:顺便编点程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web安全工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值