MFC序列化及反序列化变量

简介: 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、运行结果:


0a2653c851af460fa595bd959398a8f1.png


三、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;//开始指针
    };
目录
相关文章
|
1月前
|
存储 C#
C#中的序列化和反序列化
C#中的序列化和反序列化
12 0
|
1月前
|
存储 Java 数据库
|
13天前
|
存储 Java
Java输入输出:解释一下序列化和反序列化。
Java中的序列化和反序列化是将对象转换为字节流和反之的过程。ObjectOutputStream用于序列化,ObjectInputStream则用于反序列化。示例展示了如何创建一个实现Serializable接口的Person类,并将其序列化到文件,然后从文件反序列化回Person对象。
24 5
|
1月前
|
存储 C#
C#中的序列化和反序列化案例
C#中的序列化和反序列化案例
13 0
|
1月前
|
JSON Java Maven
使用Jackson进行 JSON 序列化和反序列化
使用Jackson进行 JSON 序列化和反序列化
27 0
|
1月前
|
存储 JSON 网络协议
【计算机网络】序列化,反序列化和初识协议
【计算机网络】序列化,反序列化和初识协议
|
2月前
|
vr&ar
MFC序列化及反序列化对象
MFC序列化及反序列化对象
18 0
|
3月前
|
存储 Java
【面试问题】什么是序列化?什么是反序列化?
【1月更文挑战第27天】【面试问题】什么是序列化?什么是反序列化?
|
3月前
|
Go
golang力扣leetcode 297.二叉树的序列化与反序列化
golang力扣leetcode 297.二叉树的序列化与反序列化
24 0
|
4月前
|
存储 算法
【每日一题Day316】LC449序列化和反序列化二叉搜索树 | BFS
【每日一题Day316】LC449序列化和反序列化二叉搜索树 | BFS
25 0

热门文章

最新文章