MFC文件查找与替换
原创
©著作权归作者所有:来自51CTO博客作者wx5fc8832a61484的原创作品,请联系作者获取转载授权,否则将追究法律责任
![这里写图片描述 MFC文件查找与替换_bc](https://s2.51cto.com/images/blog/202212/22163113_63a415d1c39194072.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
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;
}