CArchive基本用法
/* a)创建文件对象CFile b)以写方式打开文件CFile::Open c)创建序列化对象,并且和文件关联在一起CArchive,CArchive::store把数据保存到归档文件中。允许CFile写操作 d)往数据流写数据(相当于往文件写数据) ar << a << b << c e)断开数据流和文件的关联CArchive::Close f)关闭文件CFile::Close */ void write { CFile file; BOOL isOk = file.Open(TEXT("../demo.txt"),CFile::modeCreate | CFile::modeWrite); if (isOk == FALSE) { return; } //和CArchive关联 //CArchive对象是数据流,文件和CArchive绑定在一起 //srore:存储,写 CArchive ar(&file,CArchive::store); int a = 10; CString str = TEXT("ABC"); TCHAR ch = 't'; //箭头指向流向 向ar写入数据 ar << a << str << ch; ar.Close(); file.Close(); }
void read() { CFile file; BOOL isOk = file.Open(TEXT("../demo.txt"),CFile::modeRead); if (isOk == FALSE) { return; } //和CArchive关联 //CArchive对象是数据流,文件和CArchive绑定在一起 //load:读 CArchive ar(&file,CArchive::load); int a ; CString str ; TCHAR ch ; //箭头指向流向 向ar写入数据 ar >> a >> str >> ch; CString buf; buf.Format(TEXT("%d %s %c"),a,str,ch); MessageBox(buf); ar.Close(); file.Close(); }
//无法对结构体进行序列化存储
CDocument类中的应用
void CMy04_CArchiveDoc::Serialize(CArchive& ar) { if (ar.IsStoring()) { // TODO: 在此添加存储代码 //点击保存按钮执行此处 CString str = TEXT("abc"); int a = 123; ar << str << a; } else { // TODO: 在此添加加载代码 //点击打开按钮执行此处 CString str; int a; ar >> str >> a; CString buf; buf.Format(TEXT("%s,%d"),str,a); AfxMessageBox(buf); } }
不要在该前行的年纪选择安逸