在文件中找到某一行(字串),然后用另一字串代替原来这行,用CFile能做到吗?
如果能怎么作,还有别的方法吗?请指教!!!!

解决方案 »

  1.   

    我觉得最好的方法还是读入到CString中使用CString::Replace()函数替换后再写入文件中的方式比较直接一些
      

  2.   

    如果文件不太大是可以的,用CSting读出来,Find后替换,再写回去。
      

  3.   

    先CFile::find()查到位置和字串的大小,用SetPointer()函数设置位置,在写就好了
      

  4.   

    用CSting读出来没问题,“Find后替换,再写回去”说具体点好吗,能给个简单几行代码吗?麻烦你了!我的理解你们是说把文件中所有内容全部写到一个CString中,改了CString里的内容,在全部重写到文件中去,是这样吗?没有别的办法了吗?
      

  5.   

    “用SetPointer()函数设置位置,在写就好了”可以覆盖原来的行吗?
      

  6.   

    用CString.find()找到位置
    然后CString.mid()取子串
    再把它们加到一起
    重复以上步骤就可以了
      

  7.   

    不行的,需要覆盖替换的:
    你可以把修改后新的的起个名字。修改完毕后,把原来那个删除,再把新的改称原来的名字。
    用CFIle函数就可以做到。
      

  8.   

    可是文件很大,不可能都读到一个String中,所以以上的办法不是很适用,有没有别的办法啊!请了!
      

  9.   

    CStdioFile file;
    CString strLine("");
    CString key;
    CString strNew;
    CString strPath; if (!file.Open(strPath, CFile::modeReadWrite))
    {
    MessageBox("Can't parse the file");
    return;
    } while (file.ReadString(strLine))
    {
    if (strLine.Find(key) != -1)
    {
    int len = strLine.GetLength();
    strLine = strNew;
    while (strLine.GetLength() != len)
    strLine = strLine + _T(" ");
    file.Seek(- len - 2, CFile::current);
    file.WriteString(strLine);
    break;

    }
    }

    file.Close();
      

  10.   

    CStdioFile file;
    CString strLine("");
    CString key;
    CString strNew = _T("Simple line");
    CString strPath;
    DWORD dwPosition ;

    if (!file.Open("D:\\test.txt", CFile::modeReadWrite))
    {
    MessageBox("Can't parse the file");
    return;
    } while (file.ReadString(strLine))
    {
    dwPosition = file.GetPosition();
    if (strLine.Find(key) != -1)
    {
    int len = strLine.GetLength();
    strLine = strNew;
    dwPosition = file.GetPosition();
    while (strLine.GetLength() != len)
    strLine = strLine + _T(" ");
    file.Seek(- len - 2, CFile::current);
    file.WriteString(strLine);
    file.Seek(dwPosition, CFile::begin);
    }
    }
    MessageBox("OK");
    file.Close();