关于MFC读取文件问题
用CFileDialog打开选择文件的对话框来读取文件,读取debug文件里的文件正常,但是想读取别的地方的文件就会出错,听说好像是要把默认路径从别的地方设回debug,...
用CFileDialog打开选择文件的对话框来读取文件,读取debug文件里的文件正常,但是想读取别的地方的文件就会出错,听说好像是要把默认路径从别的地方设回debug,不知道怎么做,求解,采纳后再追加50分,因为经常悬赏了得不到答案,分就浪费了很可惜
CString PathName;
CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal()==IDOK)
{
PathName = fileDlg.GetPathName();
if(Load(PathName))
{
Release();
m_PPTRes.clear();
Init();
} 展开
CString PathName;
CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal()==IDOK)
{
PathName = fileDlg.GetPathName();
if(Load(PathName))
{
Release();
m_PPTRes.clear();
Init();
} 展开
2015-08-15 · 知道合伙人互联网行家
关注
展开全部
使用MFC读取文件中的内容是程序设计中经常用到的功能
CFileDialog cFileDialog( TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"All Files (*.*)|*.*||", AfxGetMainWnd());//第1步 取得路径
CString strFilePath = "";
CString strFileName = "";
if(cFileDialog.DoModal()==IDOK)
{
m_strFilePath = cFileDialog.GetPathName();
strFileName = cFileDialog.GetFileName();
UpdateData(false);
}
int input = 0;
ifstream inout;
inout.open(strFileName,ios::in);
if(!inout)
{
cerr<<"Unable to open file!"<<endl;
}
else
{
cout<<"打开文件成功"<<endl;
}
char nextline[256];
CString temp_str = "";
CString m_temp = "";
while(inout.getline(nextline, sizeof(nextline)))
{
temp_str = nextline;
m_temp += temp_str;
m_temp += "\r\n"; //MFC的编辑框需要使用“\r\n”来识别换行,单单一个“\n”是不够的。
}
m_original = m_temp ;
AfxMessageBox(m_original);
UpdateData(false);
inout.close();
inout.clear();
CFileDialog cFileDialog( TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"All Files (*.*)|*.*||", AfxGetMainWnd());//第1步 取得路径
CString strFilePath = "";
CString strFileName = "";
if(cFileDialog.DoModal()==IDOK)
{
m_strFilePath = cFileDialog.GetPathName();
strFileName = cFileDialog.GetFileName();
UpdateData(false);
}
int input = 0;
ifstream inout;
inout.open(strFileName,ios::in);
if(!inout)
{
cerr<<"Unable to open file!"<<endl;
}
else
{
cout<<"打开文件成功"<<endl;
}
char nextline[256];
CString temp_str = "";
CString m_temp = "";
while(inout.getline(nextline, sizeof(nextline)))
{
temp_str = nextline;
m_temp += temp_str;
m_temp += "\r\n"; //MFC的编辑框需要使用“\r\n”来识别换行,单单一个“\n”是不够的。
}
m_original = m_temp ;
AfxMessageBox(m_original);
UpdateData(false);
inout.close();
inout.clear();
展开全部
应该是你代码中对路径处理不正确导致的问题,贴出你的代码来帮你看看。
追问
不是读取不了文件啊,是读取非DEBUG文件夹里的文件就会报错终止
追答
你的错误应该是在file.Open这一句出错了吧,是不是你传入的name仅仅是文件名,不带全路径啊?如果,是的话,修改你前面的代码,在调用Load函数的时候,保证传入的name参数是全路径,这样能保证你的file对象能正确打开指定路径的文件。
CFileDialog dlg;
if(dlg.DoModal() == IDOK)
{
CString strFilePathName;
strFilePathName = dlg.GetPathName( );
Load(strFilePathName );
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用CFileDialog打开选择的文件时,用GetFileName只能获得选择文件的文件名,用GetPathName则可以获得选择文件的包含路径的全文件名。通常Debug文件夹是默认路径,所以用GetFileName只能打开默认文件夹的文件。
从你说的现象来看,可能你用了GetFileName。
下面是一个例子:
CFileDialog dlg;
if(dlg.DoModal() == IDOK)
{
CString strFilePathName;
strFilePathName = GetPathName( );
//打开文件 strFilePathName。。。。。。
}
仅供参考。
从你说的现象来看,可能你用了GetFileName。
下面是一个例子:
CFileDialog dlg;
if(dlg.DoModal() == IDOK)
{
CString strFilePathName;
strFilePathName = GetPathName( );
//打开文件 strFilePathName。。。。。。
}
仅供参考。
追问
我用的的确是GetPathName( );啊
追答
报错是在对话框选择文件的时候,还是选好了文件Load文件的时候?把错误提示对话框贴出来看看。
Load的定义:bool CMapEditorDlg::Load(const char* name);
调用方式为 Load((LPCSTR)(PathName))
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询