我有一个类:
class CTest : public CObject
{
public:
CTest();
virtual ~CTest();
int i;
};
可以使用如下方法存取数据:
写数据: CTest myTest;
myTest.i = 5; FILE* fp;
if ((fp = fopen("test.dat","wb")) != NULL)
{
fwrite(&myTest,sizeof(CTest),1,fp);
fclose(fp);
}
读数据:
CTest myTest; FILE* fp;
if ((fp = fopen("test.dat","rb")) != NULL)
{
fread(&myTest,sizeof(CTest),1,fp);
fclose(fp);
}
但是如果我将类的定义中添加一个CString的变量,同样的操作将不能成功。
class CTest : public CObject
{
public:
CTest();
virtual ~CTest();
CString szName; //此行添加CString的成员变量,
int i;
};
我估计是CString的大小无法固定产生的问题,麻烦高手指点,并给出解决的方法。多谢!!
class CTest : public CObject
{
public:
CTest();
virtual ~CTest();
int i;
};
可以使用如下方法存取数据:
写数据: CTest myTest;
myTest.i = 5; FILE* fp;
if ((fp = fopen("test.dat","wb")) != NULL)
{
fwrite(&myTest,sizeof(CTest),1,fp);
fclose(fp);
}
读数据:
CTest myTest; FILE* fp;
if ((fp = fopen("test.dat","rb")) != NULL)
{
fread(&myTest,sizeof(CTest),1,fp);
fclose(fp);
}
但是如果我将类的定义中添加一个CString的变量,同样的操作将不能成功。
class CTest : public CObject
{
public:
CTest();
virtual ~CTest();
CString szName; //此行添加CString的成员变量,
int i;
};
我估计是CString的大小无法固定产生的问题,麻烦高手指点,并给出解决的方法。多谢!!
解决方案 »
- 动态创建COMBOX,获取不到hwnd,求解。。。
- 怎么样让多个进程共同接管一套窗口界面
- 要产生程序的运行日志,应该怎样写。(网络编程方面的,最好举个例子)万分感谢!
- 怎样获得主板序列号?
- 请问在CRichEditCtrl中,可以不用SetSel、GetSelText实现指定位置字符的读取么?
- vc ADO读不出mysql数据库中的text字段
- 新手求大家帮忙
- 要求用MFC作一个动态模拟显示外部赛车情况,其中用CAN总线连接,老师要求用MsComm控件,请问哪位高手指示一下
- 本人材料专业高级工程师+高程(2005年考过)+系分(2006年考过),现想搞软件开发,没有资金,没有客户。哪里能找到投资渠道呢?哪里能找到客户呢?如何起步呢?
- 关于vc++工程文件改名
- 请教个关于OpenGL的简单问题.
- 各位老大,初次来跟VC打交道。问一下,VC++有无反编译程序,如果有,从那儿可以得到?
sizeof(szName)并不代表CString的实际长度。要注意哦
我是将一个类(CTest)的实例写入文件,而不是依次写入CTest里面的那些成员函数哟。
对于类里面的类实例来说,就是要一个一个依次来写入的。
{
DECLARE_SERIAL(CTest);
public:
CTest();//实现序列化需要有缺省的构造函数
virtual ~CTest();
void Serialize(CArchive &ar);
CString szName;
int i;
};
IMPLEMENT_SERIAL(CTest,CObject,0)
///////////////第二和第三个参数反了
-----------------------------------------------
pinel