哪位大哥指点一下小弟:
我是要读取一个文本内容到data里面,然后替换里面的000000,但是如果长度不等的话替换会影响下一行内容。再者最后写入文件也不对。恳请指出我的问题所在,谢谢。   
CString data=_T("");
CString data1=_T("");
 file.Open(_T("f:\\set.txt"),CFile::modeRead|CFile::typeText);
{

while(file.ReadString(data1))
{
//flag=file.ReadString(data1)
data+=data1+_T("\n");
}
}
data.Replace(_T("000000"),_T("888888"));
MessageBox(data); 
file.Close();

CFile file2;
file2.Open(_T("f:\\set2.txt"),CFile::modeCreate|CFile::modeWrite);
file2.Write(data,data.GetLength());
file2.Close();

解决方案 »

  1.   

    你可以用CreateFile打开文件,用ReadFile把内容读到一个足够大的char[]当中,从而循环调用strstr得到000000出现的位置n,再直接替换char[n],char[n+1],char[n+2]...等的内容,最后再把char[]完整写到文件里
      

  2.   

    you should pay attention to sequences
    "000000"
    "0\r\n00000" "00\r\n0000" ...
    when performing comparison
      

  3.   

    逐行读,然后每行替换。
    ===========
    参考 :CStdioFile 
      

  4.   


    CStdioFile srcFile("c:\\t.txt",CFile::modeReadWrite );
    CStdioFile targetFile("c:\\t2.txt",CFile::modeReadWrite |CFile::modeCreate);
    CString line;
    while (srcFile.ReadString(line))
    {
    while (line.Replace("000000","888888"))
    {
    }
    targetFile.WriteString(line);
    targetFile.WriteString("\n");
    }srcFile.Close();
    targetFile.Close();
      

  5.   

    如果你的文件不是特别大的话,定义一个大的buffer缓冲区,一次读取全部数据,替换以后写入
      

  6.   

    可以仔细说一下么?我就是用CStdioFile每行读,每行检查替换.但是会出问题:就是长度一样还好.但是替换的长度不一样就会影响后面的内容.可以示例一下怎么解决?
    谢谢
      

  7.   

    你先每行都内容取出来,然后放到CStringArray中保存,然后再通过数组来自己处理每行的数据等