• mfc对话框序列化实例


    CArwen.h文件

    #pragma once

    // CArwen 命令目标

    class CArwen : public CObject
    {

    DECLARE_SERIAL(CArwen)

    public:

    int age;
    CString name;

    CArwen();

    CArwen(int testAge,CString testName){
    age = testAge;
    name = testName;
    }
    virtual void Serialize(CArchive& ar);

    virtual ~CArwen();
    };

     --------------------------

    // Arwen.cpp : 实现文件
    //

    #include "stdafx.h"
    #include "first.h"
    #include "Arwen.h"


    // CArwen

    CArwen::CArwen()
    {
    }

    CArwen::~CArwen()
    {
    }

    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;
    }
    }

    -----------------------

    序列化主流程

    void CfirstDlg::TestSerializeArwen(void)
    {
    //return;

    CString filePath = _T("e:\\app\\Arwen.dat") ; //序列化把对象信息保存在该文件中
    CArwen arwen1(8,_T("aa"));
    CArwen arwen2(37,_T("张三"));

    CFile fi;

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

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

    ar.Close();
    fi.Close();
    }

    --------------------------

    反序列化主流程


    void CfirstDlg::OnBnClickedButton1()
    {

    //CArwen arwen;
    CString filePath1=_T("e:\\app\\Arwen.dat");//序列化把对象信息保存在该文件中
    CFile fi;
    CString temp;


    if(fi.Open(filePath1, CFile::modeRead) == FALSE)
    {
    MessageBox(_T("dd"));
    return;
    }
    CArchive ar(&fi, CArchive::load);
    int nCount = 2;

    CArwen* arwen = new CArwen[2];
    arwen[0].Serialize(ar); //反序列化对象
    arwen[1].Serialize(ar); //反序列化对象

    ar.Close();
    fi.Close();
    MessageBox(arwen[1].name);


    }

    序列化要点:

    1、序列化和反序列化写法保持一致,比如:都是用 Serialize,或者都是用<< >>

    2、研究了两天,感觉还可以,分享给大家

  • 相关阅读:
    springboot2.0整合logback日志(详细)
    关于Logstash中grok插件的正则表达式例子
    feign多文件上传
    HBase API(新版本)
    HBase基础知识
    Hive数据操作和数据查询
    Hive数据定义
    Hive基础知识
    Hive安装
    Spark词频统计,求TOP值,文件排序,二次排序
  • 原文地址:https://www.cnblogs.com/zhixing/p/3093262.html
Copyright © 2020-2023  润新知