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