MFC筛选文件内容

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MFC的对话框(Dialog)是Windows应用程序常用的用户界面元素之一,它可以用来显示一些信息或者与用户进行交互,比如输入一些数据或者选择一些选项等。同时,对话框还可以用来浏览或者编辑文件。 在MFC,打开或者保存文件对话框可以使用CFileDialog类。这个类提供了一些成员函数和属性,可以用来定制对话框的外观和功能。 下面是一个简单的示例,演示如何使用CFileDialog类来实现文件的打开和保存。 1. 打开文件对话框 ```cpp CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), this); if (dlg.DoModal() == IDOK) { CString filename = dlg.GetPathName(); // 在这里处理选文件 } ``` 2. 保存文件对话框 ```cpp CFileDialog dlg(FALSE, _T("txt"), _T("Untitled.txt"), OFN_OVERWRITEPROMPT, _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), this); if (dlg.DoModal() == IDOK) { CString filename = dlg.GetPathName(); // 在这里处理保存的文件 } ``` 在上面的示例代码,CFileDialog的构造函数有5个参数,分别是: - BOOL bOpenFileDialog:指定对话框是打开还是保存文件,TRUE表示打开文件对话框,FALSE表示保存文件对话框。 - LPCTSTR lpszDefExt:指定默认文件扩展名,可以为NULL。 - LPCTSTR lpszFileName:指定默认文件名,可以为NULL。 - DWORD dwFlags:指定对话框的一些属性,比如文件必须存在还是隐藏只读文件等,可以使用位运算符组合多个属性。 - LPCTSTR lpszFilter:指定文件筛选器,用来限制用户可以选择的文件类型。 在执行DoModal()函数后,如果用户点击了“确定”按钮,就可以使用GetPathName()函数获取用户选择的文件名和路径。然后就可以根据需要进行文件的读取或者写入操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值