C++ MFC / VS2017 将txt文件逐行读取显示,并保存到新文件中

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yujinlong312/article/details/101017743
void Ctest0919Dlg::OnBnClickedBtnOpenfile()
{
	CString szFilters = "Files Type(*.txt)|*.txt|All Files (*.*)|*.*||";//用于指定对话框过滤的文件类型
	CFileDialog fileDlg(TRUE, "Open file", "*.txt", OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters, this);
	if (fileDlg.DoModal()==IDOK)//常用函数DoModal用于显示"文件"对话框,供用户选择文件
	{
		//常用函数GetPathName用于返回用户选择文件的完整路径名称,
		//包括文件的路径,文件名和文件扩展名
		m_strFilePath = fileDlg.GetPathName();
		UpdateData(false);
	}
}


void Ctest0919Dlg::OnBnClickedBtnReadfile()
{
	if (m_strFilePath.IsEmpty()) return;
	if (m_pfile)
	{
		delete m_pfile;
		return;
	}
	m_strFileContent = "";
	//定义一个新的文件变量m_pfile,CFile::modeRead以只读方式打开文件
	m_pfile = new CStdioFile(m_strFilePath, CFile::modeRead);
	CString str;
	//CStidoFile提供了函数Readstring来读取文本
	while (m_pfile->ReadString(str))
	{
		m_strFileContent += str+"\r\n";
	}
	UpdateData(false);
	m_pfile->Close();
	delete m_pfile;
	m_pfile = nullptr;
	
}


void Ctest0919Dlg::OnDestroy()
{
	CDialogEx::OnDestroy();
	if (m_pfile)
		delete m_pfile;
}





void Ctest0919Dlg::OnBnClickedBtnSavefile()
{
	CString szFilters = "Files Type(*.txt)|*.txt||";
	CFileDialog fileDlg(FALSE, nullptr,	nullptr, OFN_EXPLORER | OFN_HIDEREADONLY, szFilters);
	if (fileDlg.DoModal()==IDOK)
	{
		//GetFileName用于返回用户选择的文件名称,包括文件名和扩展名,但不包含路径
		CString filePath= fileDlg.GetFileName();
		//CFile::modeCreate若打开文件不存在则创建一个新文件,如果该文件存在,则清空它的数据。
		//CFile::modeWrite 打开文件用于写入数据
		CFile saveFile(filePath, CFile::modeCreate | CFile::modeWrite);
		saveFile.Write(m_strFileContent.GetBuffer(0), m_strFileContent.GetLength());
		saveFile.Close();
		return;
	}
}


void Ctest0919Dlg::OnBnClickedBtnClrar()
{
	if (m_strFileContent.IsEmpty())
		return;
	m_strFileContent = "";
	UpdateData(false);
}

猜你喜欢

转载自blog.csdn.net/yujinlong312/article/details/101017743