将数据保存在文件中,可以使用xml,ini以及数据库等,不过用户可以通过相关工具很轻易的看到保存的内容,我想如果将一些数据用二进制的方式保存在自定义的类型文件中,应该就可以达到保密的要求了吧,这应该用到哪些函数?望大侠指点一下,我看了序列化,不过这个是保存类对象的,我只想保存一些松散的数据,虽然有变通的方法,但我想知道序列化的原理,所以想问问MFC的序列化实际上封装了哪些函数?我自己来做一个序列化和反序列化的类需要调用哪些函数?

解决方案 »

  1.   

    xml,ini都是标准的格式,软件标准化是趋势。二进制的方式也没什么特别的自己定义数据结构就好,一样的read,write.
      

  2.   


    CFile file;
    if(bIsStoring)  //保存
    {
    if( !file.Open(strFileName,CFile::modeCreate | CFile::modeWrite 
    | CFile::shareExclusive | CFile::typeBinary) )
    {
    #ifdef _DEBUG
    AfxMessageBox("Unable to open file!");
    #endif
    return false;
    }

    CArchive ar(&file,CArchive::store);

    ret = m_pPenFeature->Serialize(ar);

    ar.Flush();
    //写完毕,关闭文件流
    ar.Close();
    }
    else
    {
                     if( !file.Open(strFileName,CFile::modeRead | CFile::shareExclusive 
    | CFile::typeBinary) )
    {
    #ifdef _DEBUG
    AfxMessageBox("Unable to open file!");
    #endif
    return false;
    }

    CArchive ar(&file,CArchive::load); m_pPenFeature = new CPenFeature;

    ret = m_pPenFeature->Serialize(ar);

    ar.Flush();
    //读完毕,关闭文件流
    ar.Close();
    }给个例子你看下吧~~
    这个就是实现MFC的串行化
      

  3.   

    恩,查了MSDN,看到了相关函数!
      

  4.   

    des加密 或者自定义数据压缩算法
      

  5.   

    序列化中其实就是先保存对象所占的大小,然后紧跟着保存对象的数据,比如要保存"abcdef",则会保存6(长度)"abcdef"( 内容),执行反序列化时先读取对象所占的大小(此处为6),然后再读取6个字节的数据。
    对于int,DWORD等类型,先存储sizeof(int),sizeof(DWORD)等,然后再保存相应的数据。