我的程序是用MFC的界面,我现在想保存一个结构,结构如下:
struct test
{
int a;
DWORD b ;
char p[12];
};
MFC中void CEffectDoc::Serialize(CArchive& ar)的CArchive竟然不支持直接保存一个结构,请问如何能让它直接保存一个结构体?还有,CArchive也只支持保存一个字符,如何让它支持能够保存一个字符数组?

解决方案 »

  1.   

    直接用CFile或者fopen,什么都解决了,不用花太多时间来研究CAchieve.
      

  2.   

    仔细看看这个。。
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_CArchive.3a3a.CArchive.asp
      

  3.   

    CArchive竟然不支持直接保存一个结构,请问如何能让它直接保存一个结构体?要么CArchieve::Read/CArchieve::Write
    要么为结构体提供opearator>>和operator<<
      

  4.   

    howtotell(从何谈起):
    我一开始就是想用fopen、fread、fwrite,但麻烦的是fopen发现没有当前文件的话就打开失败,他不能自动创建,请问如何解决?
      

  5.   

    使用CFile就可以了,简单快捷,好理解。
    例子:
    CFile file;
    CFileException e;
    struct test
    {
    int a;
    DWORD b ;
    char p[12];
    };
    test teststruct;
    //...初始化struct
    if(!file.Open(strPath,CFile::modeCreate|CFile::modeWrite,&e))
    {
    //open error;
    }
    file.Write((char*)&teststruct,sizeof(test));
    file.Close();
      

  6.   

    楼上的方法,我试过了,好像也不行,当文件已经存在的时候就行
    我是在CEffectDoc::Serialize(CArchive& ar)函数里面写的,所以得先得到对话框中由用户输入的文件名,然后才传给下面这个函数的strpath变量
    if(!file.Open(strPath,CFile::modeCreate|CFile::modeWrite,&e))
    {
    //open error;
    }
    然后就出错了,郁闷,怎么解决啊
      

  7.   

    对于结构体的读写,用CFile不错
      

  8.   

    同意楼上兄弟
    用CFile 或重新写个类,然后写类的Serialize()不就行了
      

  9.   

    谁说fopen不能创建文件?把C语言的书捡起来重新看看