需求:从服务器某一天的日志中,找出某段信息
规律:需要保留含某字段(字符串)的该条日志,以及吓一条详细日志
筛选中文,没有成功,应该是字符集编码格式的问题,没有细究
CString rfile, wfile;
CString str1, str2;
CString strTemp;
CString str3;
unsigned long ulLen = 0;
rfile = "C:\\Users\\L\\Desktop\\new-mes-tool.txt"; //源文件,需要读取数据
wfile = "C:\\Users\\L\\Desktop\\a_mes.txt"; //目标文件,写入
str1 = "DevAppFileMethod.java:113"; //关键字符串1
str2 = "FinalUtil.java:44"; //2
str3 = "BL01L3"; //3
CStdioFile file;
CStdioFile file2;
CString linedata; //按行读取的数据
int flg = 0; //str1标志,取下一行str2,文件中含有多个str2
char buf[1024] = {0};
file2.Open(wfile, CFile::modeCreate | CFile::modeReadWrite | CFile::typeText);
file2.SeekToBegin();
file.Open(rfile, CFile::modeRead | CFile::typeText);
file.SeekToBegin();
ulLen = file.GetLength();
strTemp.Format(_T("%d"), ulLen);
AfxMessageBox(strTemp);
while(file.ReadString(linedata))
{
if(linedata.Find(str1) != -1 && linedata.Find(str3) != -1 && linedata.Find(" 02") != -1)
{
// TipResult("str1 已找到", TRUE);
linedata += "\n";
ZeroMemory(buf, sizeof(buf));
memcpy(buf, linedata.GetBuffer(0), linedata.GetLength());
file2.WriteHuge(buf, linedata.GetLength());
flg = 1;
continue;
}
else if((linedata.Find(str2) != -1 && flg == 1))
{
// TipResult("str1下的str2 已找到", TRUE);
linedata += "\n";
ZeroMemory(buf, sizeof(buf));
memcpy(buf, linedata.GetBuffer(0), linedata.GetLength());
file2.WriteHuge(buf, linedata.GetLength());
flg = 0;
}
else
{
flg = 0;
}
}
ulLen = file2.GetLength();
strTemp.Format(_T("%d"), ulLen);
AfxMessageBox(strTemp);
file.Close();
file2.Close();
TipResult("筛选完成", TRUE);
MFC 微软文档链接 https://learn.microsoft.com/zh-cn/cpp/mfc/mfc-desktop-applications?view=msvc-170