MFC文件查找与替换_字符串


1.控件描述:功能在地址栏输入文件名,site数里输入要生的新文件个数,文件保存栏输入要把文件保存的地址。

2.功能,目标文件为固定格式的xxx.clp文件(文本格式的吧?附上一个clp文件)里的所有_S0”字符替换成_SX”(X:如果site数是1,那么X就是1,site是2,X就是1和2)

例子:文件abc0.clp site数=3

生产文件abc1.clp(abc0.clp 里的所有_S0”都替换成了_S1”)

abc2.clp(abc0.clp 里的所有_S0”都替换成了_S2”)

abc3.clp……………………………………………

依次类推。

void CTestDlg::OnBTNReadFilePath() 
{
CString StrFileName;//="site0.clp";
GetDlgItemText(IDC_EDIT_FILE,StrFileName);//获取文件名
CFile MyFile;
CString StrFind="_S0";//需要查找的字符串
CString StrReplace,StrResult;
int i,FILE_NO = GetDlgItemInt(IDC_EDIT_NUM);
for(i=1;i<FILE_NO;i++){
StrReplace.Format(_T("_S%d"),i);//需要替换到的字符串
StrResult.Format("一共完成 %d 次替换操作",ReplaceText(StrFileName,StrFind,StrReplace,i));
// MessageBox(StrResult,"信息提示",MB_OK);
}
MessageBox("替换完成",MB_OK);
}

int CTestDlg::ReplaceText(CString StrFileName, CString StrFind, CString StrReplace,int index)
{
CStdioFile newFile,File;
int Count=0;
if(!File.Open(StrFileName,CFile::modeRead))
return -1;
CString StrNewFileName;
StrNewFileName.Format(_T("site%d.clp"),index);//TODO
if(!newFile.Open(StrNewFileName,CFile::modeCreate|CFile::modeReadWrite))
return -1;
CString Str;
while(File.ReadString(Str))
{
Count+=Str.Replace(StrFind,StrReplace);
newFile.WriteString(Str+"\n");
}
File.Close();
newFile.Close();
// CFile::Remove(StrFileName);
// CFile::Rename(StrNewFileName,StrFileName);
return Count;
}