CArchive和Serialize即通过串行化文档的写入与读取

CArchive和Serialize即通过串行化文档的写入与读取 
标签: 杂谈
之所以要这样通过串行化(CArchive和Serialize)的方式进行文件读去而不用CFile的方式进行文件的读取是因为串行化方式除了可以使用文件保存对象之外,还可以通过网络,串口,传输对象!!
例如这里使用打开键打开一个格式为txt的文件,并将文件内容显示在当前的View里面:
void CTextView::OnFileOpen()
{
 // TODO: Add your command handler code here
 
 CFileDialog mydlg(TRUE,"TXT");
 mydlg.DoModal();
 filename=mydlg.GetPathName();
 CFile myfile;
 myfile.Open(filename,CFile::modeRead); 
 CArchive ar(&myfile,CArchive::load); //定义一个文档类便于输出到视图
// SerializeRaw(ar);    //CEditView类里面的SerializeRaw方法,它只能实现txt文件的读取与储存
 //或者用Serialize(ar); 的方式进行处理如下:


CBmpTextDoc*pDoc=(CBmpTextDoc*)GetDocument();     //!!!!!进入文档类,以便使用里面的Serialize函数进行串行化读取操作


pDoc->Serialize(ar);//自动将文件里面的内容全部读取完!!!!!!!!!!!!!!!!!!!!!!!
如果要用文件读取的方式读取,那么应该这样
while(文件不到尾部)  其中不到文件尾部与EOF有关
{
 myfile。reading··········大概是这样子的,反正就是这个意思
}


CString strs;
strs=pDoc->str;    //str是本身pDoc里面自带就有的变量
CEdit& theEdit = GetEditCtrl();  //  CView是CEdit的派生,所以有它的功能
 
theEdit.SetSel(0,-1);  
 theEdit.ReplaceSel (strs);
 
pDoc->UpdateAllViews(NULL);
 
 ar.Close();
 myfile.Close();
pDoc->SetTitle(filename);
}
总结:首先CArchive ar(使用文件对话框打开的文件,CArchive::load); 
接着再pDoc->Serialize(ar);注意pDoc用GetDocument()的方式定义!···
即在pDoc里面就有“使用文件对话框打开的文件”里面的信息咯!```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值