vc++的编程不容易,有时候想实现打开一个文本文件这么简单的功能都挺麻烦的(相对DELPHI),在网上找到一个例子,经修正后列出来。
void CMainFrame::OnFileOpen() { //显示文件打开对话框 CFileDialog dlg(TRUE, "SQL", "*.txt",OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"Text Files(*.txt)|*.txt|SQL Files(*.sql)|*.sql|All Files(*.*)|*.*||"); if ( dlg.DoModal()!=IDOK ) return; //获取文件的绝对路径 CString sFileName=dlg.GetPathName(); //打开文件 CStdioFile out; out.Open(sFileName, CFile::modeRead); CString sSql="",s; //读取文件 do{ out.ReadString(s); sSql=sSql+s+(char)10; } while (out.GetPosition()!=out.GetLength()); out.Close(); AfxMessageBox(sSql); }
另有一个方法如下: CStdioFile myFile; CString ReadFileString; if(myFile.Open("C://Readme.txt", Cfile::modeRead) == TRUE) { while(myFile.ReadString(ReadFileString) != FALSE) { //... 处理代码 } } 另外还有一个保存的例子,不过还没经过亲自测试:
/************************************************* * 写文本文件 **************************************************/ //显示文件保存对话框CFileDialog dlg(FALSE, "SQL", "*.txt",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Text Files(*.txt)|*.txt|SQL Files(*.sql)|*. sql|All Files(*.*)|*.*||"); if ( dlg.DoModal()!=IDOK ) return; //获取文件的绝对路径 CString sFileName=dlg.GetPathName(); CStdioFile out; //打开文件 out.Open(sFileName, CFile::modeCreate | CFile::modeWrite); //保存文件 CString sSql= "文 本文件内容"; out.WriteString(sSql); out.Close();