如下代码:
void CDibLook3View::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
LPCTSTR lpszPathName;
CFileDialog dlg(true);
if(dlg.DoModal()==IDOK){
lpszPathName=dlg.GetPathName();
MessageBox(lpszPathName);
}
}
通过MessageBox(lpszPathName)显示出来的一直是乱码,如果MessageBox(dlg.GetPathName())显示的就是正确的路径,这是为什么,CString不是可以转换为LPCTSTR吗。
vc++中 LPCTSTR与 CString的问题
答案:2 悬赏:80 手机版
解决时间 2021-02-07 06:36
- 提问者网友:眉目添风霜
- 2021-02-06 22:19
最佳答案
- 五星知识达人网友:患得患失的劫
- 2021-02-06 23:59
dlg.GetPathName() 返回的是一个临时对象,这个临时对象在表达式结尾就析构了
出了这个表达式之后,lpszPathName指向的就是已经不存在的对象的一部分
出了这个表达式之后,lpszPathName指向的就是已经不存在的对象的一部分
全部回答
- 1楼网友:孤独的牧羊人
- 2021-02-07 01:06
cstring 类型转换为LPCTSTR类型时注意前面加上转换标识符
lpszPathName=(LPCTSTR)dlg.GetPathName();
你试试可以了不。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯