本章首先介紹了一種新的讀寫文件方式,使用MFC提供的CArchive類來實現(xiàn)?梢岳肅Archive類將對象數(shù)據(jù)保存到永久設備上。這樣即使應用程序關閉,再次啟動后仍然可以從磁盤上讀取對象數(shù)據(jù),然后在內存中重構相應的對象。讓數(shù)據(jù)持久性的過程成為串行化或序列化。
CArchive對象不僅可以處理基本類型的數(shù)據(jù),還可以處理CObject類的派生對象。CArchive類重載了提取(>>)和插入(《)操作符。通過這些重載的函數(shù),可以利用CArchive對象完成對文件的讀寫操作。
CArchive構造函數(shù)的聲明如下:
1 CArchive( CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL );
pFile:指向文件對象的指針,該文件對象是持久數(shù)據(jù)的來源或目的地;
nMode:文件對象的標示符(load,store)讀取還是存儲;
CArchive類寫入數(shù)據(jù)的實例:
01 void CFileView::OnFileWrite()
02 {
03 CFile file(“7.txt”,CFile::modeCreate|CFile::modeWrite);
04 CArchive ar(&file,CArchive::store);
05 int i=1;
06 char ch='1';
07 float f=1.3f;
08 CString str=“www.colsir.com”;
09 ar《i《ch《f《str;
10 }
完成寫入操作之后,用記事本打開7.txt,發(fā)現(xiàn)基本上都是亂碼。這是因為CArchive對象是一種二進制流。
CArchive類讀取數(shù)據(jù)的實例:
01 void CFileView::OnFileRead()
02 {
03 CFile file(“7.txt”,CFile::modeRead);
04 CArchive ar(&file,CArchive::load);
05 int i;
06 char ch;
07 float f;
08 CString str;
09 CString strResult;
10 ar》i》ch》f》str;
11 strResult.Format(“%d,%c,%f,%s”,i,ch,f,str);
12 MessageBox(strResult);
13 }
對象讀取的順序必須和保存的順序一致,有些搞不懂,那CArchive類還有什么優(yōu)勢?暫時理解不了。
MFC新建,保存文件時的格式過濾。
在字符串表中一個ID為IDR_MAINFRAME的行,用來實現(xiàn)一些初始值的設置。該項的值的優(yōu)先級低于OnNewDocument函數(shù)中的設置。通過查看OnNewDocument函數(shù)的申明,可以看到OnNewDocument函數(shù)是一個虛函數(shù)。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |