MFC筛选文件内容

文章描述了使用MFC库在Windows桌面应用程序中,通过CFile类操作文件,从服务器日志中查找包含特定字段(如`DevAppFileMethod.java:113`和`FinalUtil.java:44`)并保留相关行及后续详细日志的过程,遇到字符集编码问题。
摘要由CSDN通过智能技术生成

 需求:从服务器某一天的日志中,找出某段信息

规律:需要保留含某字段(字符串)的该条日志,以及吓一条详细日志

筛选中文,没有成功,应该是字符集编码格式的问题,没有细究

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值