mfc 怎么完成对txt文件的读取和写入

mfc 怎么完成对txt文件的读取和写入,第1张

我写了一个。

界面一个文本框两个按钮,文本框关联一个CString型变量m_Data,设置属性为Vertical scroll和Want return。

两个按钮对应的读写函数分别如下

void CFileTxtDlg::OnRead()

{

// TODO: Add your control notification handler code here

CFileDialog fDlg(TRUE)

fDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0\0"

if(fDlg.DoModal() == IDOK)

{

CStdioFile stdFile

stdFile.Open(fDlg.GetPathName(), CFile::modeRead | CFile::typeBinary)

DWORD fileLen = stdFile.GetLength()

char *pBuf = new char[fileLen + 1]

pBuf[fileLen] = 0

stdFile.Read(pBuf, fileLen)

UpdateData()

m_Data = pBuf

UpdateData(FALSE)

delete pBuf

stdFile.Close()

}

}

void CFileTxtDlg::OnWrite()

{

// TODO: Add your control notification handler code here

UpdateData()

CFileDialog fDlg(FALSE)

fDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0\0"

fDlg.m_ofn.lpstrDefExt = "txt"

if(IDOK == fDlg.DoModal())

{

CStdioFile stdFile

stdFile.Open(fDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)

stdFile.WriteString(m_Data)

stdFile.Close()

}

}

如要源代码发消息

可以使用传统的pascal *** 作文件的方法或者使用文件流。

1、传统文件 *** 作方法

assignfile(f,'c:\test')

rewrite(f)

用blockwrite或write写入二进制信息

closefile(f)

2、文件流

try

f:=tfilestream.create(filename,fmcreate

or

fmopenwrite)

文件 *** 作,写入数据

finally

f.free

end

保存到excel中比较麻烦,excel还得有驱动(我在网上下载了个封装好的excel.h

excel.cpp

直接用的,搜了几句代码,功能实现了,不过我没看懂什么意思)。

我一般直接保存到txt中,这个最简单了。

我把数据放到cstring

变量中,然后写入txt的。

1

我把写入txt的函数封装到了

工程.cpp

中了。假设为void

addtotxt(cstring

var)

2

在读取此函数的对话框中,extern

c工程名app

theapp

3

放入数据到txt中

theapp.addtotxt(strtemp)

4.工程.cpp

中的函数体。

cstring

crenamefileapp::getexepath(void)

{

char

szfilepath[max_path

+

1]={0}

getmodulefilenamea(null,

szfilepath,

max_path)//1111

(strrchr(szfilepath,

'\\')+1)[0]

=

0

//

删除文件名,只获得路径字串

cstring

path

=

szfilepath

return

path

}

void

crenamefileapp::addtotxt(cstring

strtemp)

{

cstring

h_path

h_path=getexepath()

h_path=

h_path+"文件名核对.txt"

cfile

file

if(!file.open(_t(h_path),cfile::modereadwrite|

cfile::typebinary))

{

file.open(_t(h_path),cfile::modecreate|cfile::modereadwrite|

cfile::typebinary)

}

file.seektoend()

file.write(strtemp,strtemp.getlength())

file.close()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11867690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存