现有一个文件“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","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”。谢谢。
file.Open(_T("test.txt"), CFile::modeRead);
CString strLine(_T(""));
int nLineCount = 0;
while(file.ReadString(strLine))
{在这里修改内容,最后全部重新写到文件}
file.Close();
因为碰巧你修改的字符数和原字符数一样
粗糙点的
比如先定位到第六行(用readstring),
获得当前位置。
读取第六行
修改里面的个别字符
回到原位置(之前已经记录了行首的位置)
将字符串输出writestring如果精确点的,就精确到字符,无太大必要
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();
}
如果是多字符集的工程中就可以省去