CArchive 飞鸽传书 如何实现文件的序列号存取

飞鸽传书 如何实现文件的序列号存取,本文关于 CArchive 类对文件进行读写操作《序列化》,CArchive类是一种新的对文件的读定操作方式.它没有基类。

我们知道,一个对象一旦被构造,它就存活于内存中了,当其生命周期结束之后,该对象就要被销毁。那么该如何永久保存该对象呢,即在程序再次打开后,程序能够重新构建相应的对象,还原该对象以前的动作(当然首先这个对象类要有动态创建的功能)。

CArchive类就是可以将对象永久保存在磁盘中,它的这种功能叫做串行化或序列化。

CArchive类不仅可以处理基本类型的数据,还可以处理CObject类的派生类对象。它重载了<<(插入)和>>(提取)操作符。



CArchive类的使用方法:

1、创建一个CFile类或者其派生类对象,且该文件的操作方式(读,写)要与CArchive对象的操作方式一致.

2、此时再构建一个CArchive对象,并将其与CFile对象关联起来.

3、此时就可以对CArchive对象进行读写操作了,数据类型可以不一样。

4、当进行读取数据时,要保持和写入数据时的顺序一致.



例子:

//存文件

CFile file("file.txt",CFile::modeCreate|CFile::modeWrite); //写入文件

CArchive ar(&file,CArchive::store);  //关联文件,同时操作方式一致,都是存文件

int i=4;

char ch='a';

float f=1.3f;

CString str("dfasdaf");

ar<<i<<ch<<f<<str;   //将不同内容的数据写入文件file.txt中.



//读文件

CFile file("file.txt",CFile::modeRead); //读出文件内容

CArchive ar(&file,CArchive::load);  //关联文件,同时操作方式一致,都是读出文件内容

int m;

char l;

float fl;

CString str;

ar>>m>>l>>fl>>str;   //将不同内容的数据从文件file.txt中读取出来,但一定要保证读出与写入时数据类型

                     //的数据顺序要一致,要不然读出的数据就会不正确,例如将字符串内容放入整型变量时

                     //值是不一样的.

来源:CArchive 飞鸽传书 如何实现文件的序列号存取



你可能感兴趣的:(CArchive)