博客日历
2025年07月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
30 | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
存档
2025年03月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
MFC学习笔记之2:CArchive类的使用
CArchive(读作[si:'ɑ:kaiv])没有基类,它可以将任意类型的数据直接按照二进制形式永久存储在磁盘上,并可以读取磁盘上的归档文件,再恢复为原来的数据。这种数据永久保留的过程叫作"串行化"。
1.构造函数
CArchive(CFile* pFile,UINT nMode,int nBufSize=4096,void* lpBuf=NULL );
pFile是永久数据的最终的源或目标文件对应的CFile对象;
nMode参数指明是要从归档文件中装载或存储到文件中去;
pFile是永久数据的最终的源或目标文件对应的CFile对象;
nMode参数指明是要从归档文件中装载或存储到文件中去;
如下代码构造一个CArchive对象:
CFile file("test.bin",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
CFile file("test.bin",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
CArchive ar(&file,CArchive::store);
2.写入数据到文件
operator <<
CArchive类重载了<<操作符,用来写入数据,该操作符支持的参数类型有:
CObject*,BYTE,WORD,int,LONG,DWORD,float,double
如下代码将二进制数据1B DE 83 42 CA C0 F3 3F写入到test.bin中:
double d=1.23456789; //1.23456789在内存中的二进制表示:1B DE 83 42 CA C0 F3 3F
CObject*,BYTE,WORD,int,LONG,DWORD,float,double
如下代码将二进制数据1B DE 83 42 CA C0 F3 3F写入到test.bin中:
double d=1.23456789; //1.23456789在内存中的二进制表示:1B DE 83 42 CA C0 F3 3F
ar<<d;
可以用如下代码试试1B DE 83 42 CA C0 F3 3F表示的数据:
double doubleValue=0.0;
double doubleValue=0.0;
unsigned char bin[]={0x1b,0xde,0x83,0x42,0xca,0xc0,0xf3,0x3f};
memcpy(&doubleValue,bin,8);//此时doubleValue=1.23456789
3.从文件读取数据
operator >>
CArchive类重载了>>操作符,用来读取数据,示例代码如下:
operator >>
CArchive类重载了>>操作符,用来读取数据,示例代码如下:
CFile file("test.bin",CFile::modeRead|CFile::typeBinary);
CArchive ar(&file,CArchive::load);
double d=0.0;
ar>>d;//此时d=1.23456789
上一篇: MFC学习笔记之1:b.文档和视图
下一篇: MFC学习笔记之3:常见的MFC视图类及其继承关系
分类:Win32/C++ 查看次数:8769 发布时间:2009/7/4 18:46:55