现有一个文件“test.txt”,内容如下:
"1","abc","2","20","40"
"2","rtr","4","30","40"
"3","abc","5","35","40"
"4","ggg","12","25","40"
"5","hhh","11","23","40"
"6","rrr","13","20","40"
请问用什么方法可以方便修改第6行的“rrr”为“ttt”,修改第3行的“35”为“55”。谢谢。

解决方案 »

  1.   

    CStdioFile file;
    file.Open(_T("test.txt"), CFile::modeRead);
    CString strLine(_T(""));
    int nLineCount = 0;
    while(file.ReadString(strLine))
      {在这里修改内容,最后全部重新写到文件}
    file.Close();
      

  2.   

    不需要全部重写
    因为碰巧你修改的字符数和原字符数一样
    粗糙点的
    比如先定位到第六行(用readstring),
    获得当前位置。
    读取第六行
    修改里面的个别字符
    回到原位置(之前已经记录了行首的位置)
    将字符串输出writestring如果精确点的,就精确到字符,无太大必要
      

  3.   


    typedef struct _TEXT_INFO_
    {
    int nIndex;
    CString strSrc;
    CString strDest;
    }TEXT_INFO; TEXT_INFO info[] = 
    {
    {3, _T("35"), _T("55")},
    {6, _T("rrr"), _T("ttt")}
    }; try
    {
    CStdioFile file;
    file.Open(_T("F:\\11.txt"), CFile::modeReadWrite);
    CString strText(_T(""));
    CString strLine(_T(""));
    int nIndex = 0;
    while(file.ReadString(strLine))
    {
    ++nIndex;
    for(int i=0; i<sizeof(info)/sizeof(info[0]); i++)
    {
    if(nIndex == info[i].nIndex)
    {
    strLine.Replace(info[i].strSrc, info[i].strDest);
    break;
    }
    }
    strText += strLine + _T("\r\n");
    }
    strText.TrimRight(_T("\r\n"));
    file.SetLength(strText.GetLength());
    file.SeekToBegin();
    file.WriteString(strText);
    file.Close();
    }
    catch (CFileException* e)
    {
    e->ReportError();
    e->Delete();
    }
      

  4.   

    file.Open(_T("test.txt"), CFile::modeRead)中_T 是什么意思????
      

  5.   

    _T是unicode编码用到字符串时的约定
    如果是多字符集的工程中就可以省去