做管理系统的时候需要将进行文件读写,其中涉及到自定义的类的时候就比较麻烦了。尤其是我的类中有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) { // 如果父类成员需要序列化时ÿ