serialization是一种思想,这个思想是——对象是连续的,这意味着我们可以在程序退出时把它们保存到磁盘上,程序重新运行是又恢复它们。(摘自VC++6.0技术内幕)
1.CArchive类
CArchive类没有基类,它的作用类似于一个二进制流,用于文件的输入输出;
它也重载了操作符"<<",">>",用法和cout和cin一样,但CArchive不仅可以输出基本类型的数据,还可以输出CObject类型的对象(包括从CObject中派生的类型)
CArchive类使用实例:(结合文件对话框的使用)
void CGraphicView::OnFileRead()
{
// TODO: Add your command handler code here
CFileDialog fileDlg(TRUE); //创建一个文本对话框,TRUE表示用于文本打开
fileDlg.m_ofn.lpstrTitle="我的文件打开对话框";
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)/0*.txt/0All Files(*.*)/0*.*/0/0";//这里注意过滤器的格式
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);
CArchive ar(&file,CArchive::load);
int i;
float f;
CString str;
CString fstr;
ar>>i>>f>>str;
fstr.Format("%d,%f,%s",i,f,str);
MessageBox(fstr);
}
}
void CGraphicView::OnFileWrite()
{
// TODO: Add your command handler code here
CFile file("1.txt",CFile::modeWrite|CFile::modeCreate);
CArchive ar(&file,CArchive::store);
int i=1;
float f=11.1f;
CString str="MFC13";
ar<<i<<f<<str;
}