自定义的结构图如下:struct A{
  CString str; 
};
typedef struct B
{
  struct A a;
  CString  s[3];
};想网络传输结构体B,该怎么序列化呢,最好举个例子

解决方案 »

  1.   

    例子
    struct   A{   
      int   a   ;   
      float   b;   
      friend   CArchive   &   operator   <<(CArchive   &   arc,A   &data);   
      friend   CArchive   &   operator   >>(CArchive   &   arc,A   &data);   
      }   
        
      CArchive   &   operator   <<(CArchive   &   arc,A   &data)   
      {   
          arc<<a<<b;   
      return   arc;   
      }   
      CArchive   &   operator   >>(CArchive   &   arc,A   &data)   
      {   
      arc>>a>>b   
      return   arc;   
      }   
      

  2.   

    将结果转换成字节数据,先把数据大小写入,再写入字节内容.也可以将数据构建成CObject类的形式.
    比如:
    struct A{ 
      CString str; 
    };
    int nCount = A.str.GetLength();
    BYTE *pData = new BYTE[nCount+1];
    memcpy(pData,A.str.GetBuffer(nCount),nCount);
    CFile f;
    char buf[512];
    if( !f.Open( "C:\test.dat", CFile::modeCreate | CFile::modeWrite ) ) {
       #ifdef _DEBUG
          afxDump << "Unable to open file" << "\n";
          exit( 1 );
       #endif
    }CArchive cf(f,CArchive::store);//写入
    cf<<nByteCount;
    for(int i=0;i<nCount;i++)
    cf<<pData[i];