举个例子,有一文本文件test.txt如下:
192.168.1.1:1,60.000,60.000
192.168.1.1:2,60.000,60.000
192.168.1.1:3,60.000,60.000
192.168.1.1:5,60.000,60.000
192.168.1.1:21,60.000,60.000
192.168.1.1:34,60.000,60.000
192.168.1.1:35,60.000,60.000
192.168.1.1:66,60.000,60.000
192.168.1.1:123,60.000,60.000
192.168.1.1:234,60.000,60.000我想找到192.168.1.1:21这行,并将其后面的值改为40.000,40.000,即这行值变为“192.168.1.1:21,40.000,40.000”如何能够只在一个文件里操作,不用写第二个文件?
用CStdioFile.ReadString()和CStdioFile.WriteString()能够实现吗?
借助CFile.Seek()可不可以?

解决方案 »

  1.   

    先用CFile.Seek()把指针指到21后面就可以了.
      

  2.   


    CStdioFile file;
    file.Open("a.txt",CFile::modeReadWrite);
    CString str;
    while(true){
    file.ReadString(str);
    if(str.Left(str.Find(",",0))==CString("192.168.1.1:21")){
    file.Seek(0,CFile::current);
    file.Write("192.168.1.1:21,40.000,40.000",strlen("192.168.1.1:21,40.000,40.000"));
    break;
    }
    }
    file.Close();
      

  3.   

    最笨的办法是,把txt中的数据一行一行的读出来,取每一行中第一下“,”前的字符串,然后和你要改的数据IP进行比较,如果相等就用你的新值替换掉“,”后面的值,重新写进txt去就OK了,如果不相等接着找,找到为止!希望对你有帮助!
      

  4.   

    摸索过了我现在是用两个CStdioFile实现的,会生成两个文件
    CStdioFile sfp1,sfp2
    用sfp1.ReadString(strValue)读一个文件里的内容,然后对strValue进行操作,
    if有要找的内容,就更新strValue的值后用sfp2.WriteString()写进另一个文件test2.txt,
    else直接用sfp2.WriteString()将strValue写进test2.txt;我想只用一个文件来读写
    这个问题我已经查了很多搜了很久试了很多次了,没实现得了
    才到这里来提问的
      

  5.   

    用fstream吧,用getline方法读取每一行,把你感兴趣的行修改后再写回去
      

  6.   

    哦,我七楼有各地方错了
    应该是
    file.Seek(-2-str.GetLength(),CFile::current);
    file.Write("192.168.1.1:21,40.000,40.000\n",strlen("192.168.1.1:21,40.000,40.000"));