在使用中,我們常要將一些資料儲存為檔案的形式,完後在載入的時候,進行讀取。常用的有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中類的序列化
一 序列化的含義是什麼?序列化就是將乙個物件的狀態 各個屬性量 儲存起來,然後在適當的時候再獲得。序列化分為兩大部分 序列化和反序列化。序列化是這個過程的第一部分,將資料分解成位元組流,以便儲存在檔案中或在網路上傳輸。反序列化就是開啟位元組流並重構物件。物件序列化不僅要將基本資料型別轉換成位元組表示...