开发中需要对CStringArray进行保存操作,涉及到序列化,特总结一下:

 //写
  CStringArray saTmp1;
  CStringArray saTmp2
  saTmp1.AddString(_T("str1"));
  saTmp2.AddString(_T("str2"));
  CFile file;
  file.Open(_T("C:\\mycfg.dat"), CFile::typeBinary | CFile::modeCreate | CFile::modeWrite);
  CArchive(&file, CArchive::store);
  saTmp1.Serialize(ar);
  saTmp2.SErialize(ar);
  ar.Close();
  file.Close(); //读
  CFile file;
  file.Open(_T("C:\\mycfg.dat"), CFile::typeBinary | CFile::modeRead);
  CArchive ar(&file, CArchive::load);
  CStringArray saTmp1;
  CStringArray saTmp2;
  saTmp1.Serialize(ar);
  saTmp2.Serialize(ar);
  ar.close();
  file.close();
  for(int i = 0; i <saTmp1.GetCount(); i++)
  {
    AfxMessageBox(saTmp1.GetAt(i));
  }
  for(int j = 0; j <saTmp2.GetCount(); j++)
  {
    AfxMessageBox(saTmp2.GetAt(j));
  }
  备注:上述代码最好放在try{}catch{}中,并判断每一步的返回值。

05-11 11:09