MFC中的序列化——文件读写——详细步骤教程

在VS2017中,管理系统文件读写时,若涉及自定义类,尤其是包含string类型的类,直接使用输入输出流不便操作。本文详细介绍了如何在MFC中使用序列化进行文件读写,包括使用CString替代string,以及处理无法直接通过流操作符读写的string数据的特殊方法。文章最后提到,对于复杂读写操作,可采用内嵌类和转换方法,以保持代码封装性。
摘要由CSDN通过智能技术生成

做管理系统的时候需要将进行文件读写,其中涉及到自定义的类的时候就比较麻烦了。尤其是我的类中有string 的类型,不能直接用输入输出流或者强制类型转换进行读写。然而网上各种序列化的资料也比较乱,很多都只写了一部分。因此在自己完成之后再系统地归纳一下,希望对大家有帮助。我是在vs2017中测试的。

 

进入正题。对于你希望用序列化进行文件读写的类,字符类型最好不要用string而是用CString(不过我就是用string的,会更麻烦一点,下文会提到)。

在你的类中加入下面的代码。

//.h文件中
class yourclass {
	// 序列化声明宏
	DECLARE_SERIAL(StudentHealth);//需要添加的部分
	friend CArchive& AFXAPI operator<<(CArchive& ar, 你的类 &_tstruct);//需要添加的部分
	friend CArchive& AFXAPI operator>>(CArchive& ar, 你的类 &s);//需要添加的部分

public:
	virtual void Serialize(CArchive &ar);//需要添加的部分

	void function() { ; }//你的函数等

private:
	int x;//你的数据成员等等
};

在你的类的实现文件中加入下面的代码。

//.cpp文件中
#include"你的类.h"

// 序列化实现宏
IMPLEMENT_SERIAL(你的类, CObject, 1);//这个要放到.cpp中

void 你的类::Serialize(CArchive &ar) {	// 如果父类成员需要序列化时ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值