通过CFile::Write和CFile::Read从TXT中读写到CString中去

之前在网上搜了很多相关的帖子,虽说这个不是很难,只是介绍不是很具体,有的只是Write的,下面两个读写要配套,要不然会出错。我就稍微做下总结,不过我不做重复性的工作,只是讲点容易忽视的。

我就直接上代码,然后再讲解。

这个代码主要是从把CString保存到txt文件中去。

	CString cstrFilePath;
	CFileDialog dlg(FALSE,_T("*.txt"),m_strCurTeachFileName,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY |OFN_CREATEPROMPT,_T("文本文档 (*.txt)|*.txt||"),this);	
	//TRUE为OPEN对话框,FALSE为SAVE AS对话框
	if(dlg.DoModal()==IDOK)
	{
		
		cstrFilePath=dlg.GetPathName();
		m_strCurTeachFileName=dlg.GetFileName();
		CFile cfile;
		cfile.Open(cstrFilePath,CFile::modeCreate | CFile::modeReadWrite);
		UpdateData(true);
		cfile.Write((LPCTSTR)m_strCodeContent.GetBuffer(m_strCodeContent.GetLength()),m_strCodeContent.GetLength()*sizeof(TCHAR));
		cfile.Flush();
		cfile.Close();
		cstrFilePath.Replace(_T("txt"),_T("xml"));	
		m_curXmlFile.Save(cstrFilePath);
		AfxMessageBox(_T("保存成功"));
		m_strCurTeachFileName=_T("");
	}
下面的是从txt文件中读出数据给CString

        CFileDialog dlg(TRUE,_T("*.txt"),NULL,OFN_HIDEREADONLY |OFN_CREATEPROMPT,_T("文本文档 (*.txt)|*.txt|所有文件(*.*)|*.*||"),this);
	if(dlg.DoModal() == IDOK)
	{
		CFile file;
		
		cstrFilePath=dlg.GetPathName();
		m_strCurTeachFileName=dlg.GetFileTitle ( );
		file.Open(cstrFilePath,CFile::modeReadWrite);
		file.SeekToBegin();
		file.Read(m_strCodeContent.GetBuffer(file.GetLength()),file.GetLength());
		file.Close();
                UpdateData(false);
m_strCodeContent.ReleaseBuffer();


}




我是利用CFileDialog这个类实现一个保存的窗口,这个类我就不具体介绍了,我认为这个讲的还行,可以好好看看这个,提供一个链接http://hi.baidu.com/gootyking/item/38abf81fd8099cfa64eabf2f

CFile这个类主要实现对文件的读写,我就随便找个帖子,大家先看这个链接http://www.datarelab.com/blog/Technical_literature/63.html,大致了解下CFile。

读完了上面的CFile的链接,可能还是对CString读写有点迷糊有点迷糊,我先补充点Read和Write这两个函数的理解:

Read( void* lpBuf, UINT nCount )     lpBuf是从文件中读取到的数据的内存Buf指针,nCount是从文件读取的字节数

Write( const void* lpBuf, UINT nCount )  lpBuf是写入文件数据的内存Buf指针,nCount是Buf里需要写入文件的字节数

我们怎么给CString提供一块内存呢,这就通过CString的GetBuffer()这个函数,我再给大家介绍个帖子http://www.cnblogs.com/jamesmile/archive/2010/04/19/1715756.html,我提醒一下这个GetBuffer函数,它不是从外部分配,而是从内部分配。





  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值