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




参考:
https://www.bilibili.com/video/BV1jb411M78M?p=76

posted @   double64  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示