0
点赞
收藏
分享

微信扫一扫

MFC 文件 File 序列化和反序列化

MFC 文件 File 序列化和反序列化_写数据

//写文件
void CMainFrame::OnCarchiveWrite()
{
	// TODO:  在此添加命令处理程序代码

	/*
		a) 创建文件对象 CFile
		b) 以写方式打开文件 CFile::Open
		c) 创建序列化对象,并且和文件关联在一起 CArchive
		CArchive::store 把数据保存到归档文件中。允许CFile写操作。
		d) 往数据流写数据(相当于往文件写数据)
		ar << a << b << c
		e) 断开数据流和文件的关联 CArchive::Close
		f) 关闭文件 CFile::Close
	*/

	CFile file;
	BOOL isOk = file.Open(TEXT("../demo.txt"), CFile::modeCreate | CFile::modeWrite);
	if (isOk == FALSE)
	{
		return;
	}

	//和CArchive管理
	//CArchive对象是数据流,文件和CArchive绑定一起,
	//store: 存储,写
	CArchive ar(&file, CArchive::store);

	//和cout用法一样
	int a = 10;
	CString str = TEXT("ABC");
	TCHAR ch = 't';

	//箭头代表流向
	//数据流向ar, ar指向文件
	ar << a << str << ch;

	ar.Close(); //断开数据流和文件的关联
	file.Close();
}

//读文件
void CMainFrame::OnCarchiveRead()
{
	// TODO:  在此添加命令处理程序代码

	CFile file;
	BOOL isOk = file.Open(TEXT("../demo.txt"), CFile::modeRead);
	if (isOk == FALSE)
	{
		return;
	}

	//和CArchive管理
	//CArchive对象是数据流,文件和CArchive绑定一起,
	//load: 加载,读
	CArchive ar(&file, CArchive::load);

	//和cout用法一样
	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();
}


举报

相关推荐

0 条评论