關於qt中,對映類,序列化資料的一點記錄

2021-09-24 18:40:34 字數 2750 閱讀 1859

在使用中,我們常要將一些資料儲存為檔案的形式,完後在載入的時候,進行讀取。常用的有ui介面的一些操作記錄等配置檔案,qt中,除了使用qsetting 外,我們還可以可以使用序列化的形式,廢話不多說,直接從**裡面理解:

標頭檔案:

#include #include "qdebug.h"

#include "qsettings.h"

#include #include "qfile.h"

一:先來看對映的方式.

//自定義對映類.

/自定義對映類.

class cameroandstandardfilec

cameroandstandardfilec(const  qstring &_camerofile,const qstring &_stardfile):

camerofile(_camerofile), stardfile(_stardfile)

qstring getcamerofile()  const 

qstring getstardfile()  const

private :

qstring camerofile;

qstring stardfile;

};//巨集定義乙個對映的方式.

typedef qmapcameroandstandardfilemap;

看使用方式:

int main()

;//實現部分

qsampledata::qsampledata()

qsampledata::~qsampledata()

//過載了=

qsampledata &qsampledata::operator=(const qsampledata& other)

//過載》

qdatastream& operator>>(qdatastream& in, qsampledata& data)

//過載<<

qdatastream& operator<

//看使用情況.

int main()

看資料結果

和我們設定的資料一樣,都無需自己解析

/接下裡,我們實現自定義的整個類, 來綜合使用,以整合到專案中來.

這裡實現自定義的類

//檔案名字: qserialdataclass.h

#pragma once

#include #include "qfile.h"

//這個類是可以序列化的類.

class qserialdateclass

;//實現類的內容:

#include "qserialdateclass.h"

qserialdateclass::qserialdateclass()

qserialdateclass::~qserialdateclass()

qserialdateclass &qserialdateclass::operator=(const qserialdateclass& other)

qdatastream& operator>>(qdatastream& in, qserialdateclass& data)

qdatastream& operator<

//以上只是實現了可以序列化的類,接下來,我們將qdatastream包裝以下,來達到我們使用編輯的方式.

//檔案名字 serialmanageclass.h

#pragma once

#include "qserialdateclass.h"

#include "qfile.h"

#include "qdebug.h"

#include "qdir.h"

class serialmanageclass

;//正常實現的類的.cpp檔案. serialmanageclass.cpp

#include "serialmanageclass.h"

serialmanageclass::serialmanageclass(const qstring& filename)

void serialmanageclass::createconfigdirec(const qstring direcname)

}void serialmanageclass::setseraldata(qserialdateclass& indata, qstring configfile)

qfile file(configfile);

file.open(qiodevice::writeonly);

qdatastream out(&file);

out << indata;

file.close();

}void serialmanageclass::getseraldata(qserialdateclass& outdata, const qstring& configfilename)

else }

serialmanageclass::~serialmanageclass()

/ok,實現了之後,我們來看看,如何呼叫.

//這裡的main.**件中 ,別忘了加入 #include "serialmanageclass.h"

void main()

讀取資訊成功,下面可以將其加入到工程專案檔案中了,

其實私底下學習並寫了好多東西,可以寫完之後,發現用不到,過段時間就忘了。等用的時候,到處找之前寫的demo,又要重新看,得不償失.

C 中關於類的序列化

1.什麼是序列化 序列化是將物件狀態轉換為可保持或傳輸的格式的過程,在序列化過程中,物件的公共欄位和私有字段以及類的名稱 包括包含該類的程式集 都被轉換為位元組流,然後寫入資料流。與序列化相對的是反序列化,它將流轉換為物件。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料。2.為什麼使用序列化 乙個原因...

C 中類的序列化和反序列化

說明 本文演示將類序列化後寫入記事本並從記事本讀取反序列化為物件 1.首先建立乙個類,同時類必須標識為serializable,如下 serializable public class region public string region id public string region name ...

java中類的序列化

一 序列化的含義是什麼?序列化就是將乙個物件的狀態 各個屬性量 儲存起來,然後在適當的時候再獲得。序列化分為兩大部分 序列化和反序列化。序列化是這個過程的第一部分,將資料分解成位元組流,以便儲存在檔案中或在網路上傳輸。反序列化就是開啟位元組流並重構物件。物件序列化不僅要將基本資料型別轉換成位元組表示...