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); } }
不要在该前行的年纪选择安逸

浙公网安备 33010602011771号