您的位置:首页 > 其它

MFC学习笔记:CArchive类的使用

2012-09-11 14:25 337 查看
CArchive(读作[si:'ɑ:kaiv])没有基类,它可以将任意类型的数据直接按照二进制形式永久存储在磁盘上,并可以读取磁盘上的归档文件,再恢复为原来的数据。这种数据永久保留的过程叫作"串行化"。

1.构造函数

CArchive(CFile* pFile,UINT nMode,int nBufSize=4096,void* lpBuf=NULL );

pFile是永久数据的最终的源或目标文件对应的CFile对象;

nMode参数指明是要从归档文件中装载或存储到文件中去;

如下代码构造一个CArchive对象:

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

ar<<d;

可以用如下代码试试1B DE 83 42 CA C0 F3 3F表示的数据:

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类重载了>>操作符,用来读取数据,示例代码如下:

CFile file("test.bin",CFile::modeRead|CFile::typeBinary);

CArchive ar(&file,CArchive::load);

double d=0.0;

ar>>d;//此时d=1.23456789
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: