VC++ 串行化编程实例

Win10 + VC6;

首先新建一个单文档工程,名为ardemo1;

增加写文件、读文件菜单;菜单ID自动生成;自己改也可以;

在 写文件 菜单,右击,选择 建立类向导;

在类向导中,类名选中View类,选中写文件菜单ID,Message中选COMMAND,点击 Add Function;

在弹出的对话框中输入成员函数名; 然后点 Edit Code,进入编辑该函数代码;

同样添加 读文件 菜单的处理成员函数;

视类中编辑读写文件菜单代码,如下;

void CArdemo1View::OnFileWrite() 
{
	// TODO: Add your command handler code here
	//构造CFile对象
	CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);
	//将CArchive与CFile对象相关联
	CArchive ar(&file,CArchive::store);
	int t1 = 99;
	char ch1 = 'q';
	float f1 = 7.3f;
	CString str1("VC++ Archive Demo");
	ar<<t1<<ch1<<f1<<str1;
}

void CArdemo1View::OnFileRead() 
{
	// TODO: Add your command handler code here
	//构造CFile对象
	CFile file("1.txt",CFile::modeRead);
	//构造存档对象
	CArchive ar(&file,CArchive::load);
	int t2;
	char ch2;
	float f2;
	CString str2;
	//用来显示结果
	CString strResult;
	//顺序必须与写入顺序相同
	ar>>t2>>ch2>>f2>>str2;
	strResult.Format("%d,  %c,  %f,  %s",t2,ch2,f2,str2);
	
	CDC* pDC=GetDC();
	pDC->TextOut(100,100,strResult);
}

运行程序;先执行 写文件 菜单;

在磁盘上生成一个文件,内容如下,有乱码是因为按二进制写入的;    读的时候VC自己会识别;

然后再执行 读文件 菜单;把刚才写入的内容读取,使用pDC->TextOut(100,100,strResult)显示出来;

关于VC++串行化的简要说明:

所谓的文档串行化,解决的是这么一类问题:对于内存中的变量,当程序结束时就会消失,有没有办法把它们的结果记录在硬盘上,当程序结束,重新启动程序时,有没有办法重新加载这些保存在硬盘上的对象呢?
首先考虑的是CFile对象。但是,因为CFile在读写时始终要求的是字符串buffer,相对比较麻烦,MFC提供了一个更简单的类CArchive来实现文件的读写。
使用CArchive对象时需要注意的是:
1.这个对象必须与一个CFile对象相关联
2.CArchive对象重载了<<和>>操作符,不仅可以处理基本数据类型,也能够处理从CObject派生出来的类型。

参阅:

https://blog.csdn.net/thefutureisour/article/details/8185205

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/88564669