CStringList链表如何写入到本地文件中?冉在这里了。麻烦最好给个写的例子或示范。

解决方案 »

  1.   

    CStringList支持序列化,用序列化保存文件是最简单的了。
      

  2.   

    下面是我写的一个函数用来保存。 m_descList 就是CStringList类函数,使用file的write写吗?如果是。怎么写?CFile fp;
    CFileException exc;

    if(!fp.Open((LPCSTR)("c:\\1.dat"),CFile::modeCreate|CFile::modeWrite,&exc))
    {
    CArchive ar(&fp,CArchive::store);
    m_descList.Serialize(ar);       //fp.Write(&m_descList,);
    ar.Close();
    }
      

  3.   


    CStringList strList; // 假设有数据了
    CFile theFile;
    theFile.Open(_T("d:\\stringlist.txt"), CFile::modeCreate | CFile::modeWrite);
    CArchive archive(&theFile, CArchive::store);
    archive << strList; // <----- 数据存文件,或者 strList.Serialize(archive);CFile theFile;
    theFile.Open(_T("d:\\stringlist.txt"), CFile::modeRead);
    CArchive archive(&theFile, CArchive::load);
    archive >> strList; // <----- 从文件读取数据,或者 strList.Serialize(archive);
      

  4.   

    是要分行写吗?用CFile::Write可以将内容写入文件一个个的取得CStringList中的字符串,存在临时变量strLine中,
    然后
    CFile fTarget;
    fTarget.Open(...) //打开你要操作的文件
    for(循环CStringList中的字符串)
    {
        fTarget.Write(strLine.GetBuffer(strLine.GetLength),strLine.GetLength());
    }
    fTarget.Close();
      

  5.   

    回复 jameshooo:
    if(fp.Open(("c:\\1.dat"),CFile::modeCreate|CFile::modeWrite,&exc))
    {
    CArchive ar(&fp,CArchive::store);
    m_descList.Serialize(ar); ar.Close();
    }
    我是这么写的。但是跟内容不全。不知道怎么回事。少了些东西
      

  6.   

    可以确定。读入时候文件大小事60k.写到另一文件里变成35k了。少了很多会不会和我的这些代码有关系m_descList.InsertBefore(pos,csDesc);
    m_descList.RemoveAt(pos);
    实现功能是修改此节点下的内容。csDesc 为新内容。。是不是这里错了?
      

  7.   

    你确定只序列化了一个CStringList?
    最好在保存前以及读取后TRACE一下,看看CStringList的内容是否符合要求。
      

  8.   

    我的vs2005  archive << strList  提示有错 strList.Serialize(archive);这个OK!