MFC 文件路径问题
void CFileDlg::OnClickedOpenButton(){
// TODO: Add your control notification handler code here
// 设置过滤器
TCHAR szFilter[] = _T("文本文件(*.dat)|*.dat|所有文件(*.*)|*.*||");
// 构造打开文件对话框
CFileDialog fileDlg(TRUE, _T("dat"), NULL, 0, szFilter, this);
CString strFilePath;
// 显示打开文件对话框
if (IDOK == fileDlg.DoModal())
{
// 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里
strFilePath = fileDlg.GetPathName();
pp=strFilePath;
pp.Replace(_T("\\"),_T("\\\\"));
chh=(LPSTR)(LPCTSTR)pp;
SetDlgItemText(IDC_OPEN_EDIT, strFilePath);
//s=pp;
}
}
void CFileDlg::OnClickedButton2()
{
FILE *fp1;
fp1=fopen(chh,"rb");
fclose(fp1);
}
为什么chh这个路径名老出错,求助!其中char *chh;改了两三天了都是不对,各种方法都试了。 代码不全
不过应该是类型转换的问题{:9_240:} 小人 发表于 2015-10-28 17:41
代码不全
不过应该是类型转换的问题
就是fp1=fopen(chh,"rb");这句,chh应该是文件路径名chh="E:\\wzp-\\DeLayer2.dat";如果我直接给chh赋值路径,你们fopen可以打开文件,但是我需要strFilePath = fileDlg.GetPathName();
pp=strFilePath;
pp.Replace(_T("\\"),_T("\\\\"));
chh=(LPSTR)(LPCTSTR)pp;
这样把CString型转换成char*,但是这样就不对了,为什么
谢谢! 小A菜 发表于 2015-10-28 18:13
就是fp1=fopen(chh,"rb");这句,chh应该是文件路径名chh="E:\\wzp-\\DeLayer2.dat";如果我直接给chh赋值 ...
cstring是宽字符类型你直接转换过来 是会出错的
举个栗子 :
假设 pp 是cstring类型,值是"ABC" ; chh 是char *类型
那么chh=(LPSTR)(LPCTSTR)pp;这个语句转换过后
chh的值 是这样的 "A B C "
(占6个元素的位置 每个字符中间是空值 你可以自己写个函数处理下 或者换种方法来处理){:9_240:} 小人 发表于 2015-10-29 10:35
cstring是宽字符类型你直接转换过来 是会出错的
举个栗子 :
假设 pp 是cstring类型,值是"ABC"...
已经解决了,虽然不是用楼主的方法,依然非常感谢!!!
页:
[1]