MFC序列化(serial)簡單例子

來源:互聯網
上載者:User
文章目錄
  • 1.先定義類CArwen
  • 2.測試程式

我們儲存一些常值內容可以很簡單的儲存成一個檔案就行了.但如果要把一些類對象資訊儲存起來,然後讀取時用那些資訊初始化一個類對象就比較複雜了.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();

 

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.