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);
    }
}

 



 

  

posted @ 2020-07-04 22:32  Forward_Forever  阅读(1154)  评论(0编辑  收藏  举报