不存在从 "CString" 到 "LPCWSTR" 的适当转换函数

乖灬小狐 2014-07-13 04:27:18
VC++,MFC,OpenCV

CString filename = fileDlg.GetPathName();
USES_CONVERSION;
LPWSTR pwStr=new wchar_t[filename.GetLength()+1];
wcscpy(pwStr,T2W((LPCTSTR)filename));
int len = WideCharToMultiByte(CP_ACP,0,filename,-1,NULL,0,NULL,NULL);//filename下波浪
char * cvfile = new char[len];
WideCharToMultiByte(CP_ACP,0,filename,-1,cvfile,len,NULL,NULL);//filename下波浪
CFile file;
file.Open(filename,CFile::modeRead|CFile::typeBinary);
file.SeekToBegin();

提示的错误是:


新手不知道哪里出了问题……望大神指教!谢谢!
...全文
2177 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
乖灬小狐 2014-07-14
  • 打赏
  • 举报
回复
不太懂GetBuffer()是怎么使用的……不过#6,#7的方法试了,成功编译过了! 感谢以上所有回答的朋友!
边走边瞧 2014-07-14
  • 打赏
  • 举报
回复
楼上都是正确答案,LZ结贴吧。
  • 打赏
  • 举报
回复
工程用了unicode字符集。设置成多字节字符集,就好了。
zhuyf87 2014-07-14
  • 打赏
  • 举报
回复
提示已经说的很清楚了,用CString::GetBuffer()可以得到CString内部维护的字符串指针。
mujiok2003 2014-07-14
  • 打赏
  • 举报
回复
引用 6 楼 xiaohuh421 的回复:
因为你的编译环境是多字符集. CString实际上是CStringA, 即内部是ASCII的. wcscpy(pwStr,T2W((LPCTSTR)filename)); 这里你都作了转换, 为什么不用呢?? 后面的参数应该是使用pwStr, 而不是filename.
正解。 T2W
sdghchj 2014-07-14
  • 打赏
  • 举报
回复
wcscpy(pwStr,T2W((LPCSTR)filename)); LPCTSTR->LPCSTR
xiaohuh421 2014-07-14
  • 打赏
  • 举报
回复
因为你的编译环境是多字符集. CString实际上是CStringA, 即内部是ASCII的. wcscpy(pwStr,T2W((LPCTSTR)filename)); 这里你都作了转换, 为什么不用呢?? 后面的参数应该是使用pwStr, 而不是filename.
caewow 2014-07-14
  • 打赏
  • 举报
回复
使用 CString::GetBuffer() 即可
  • 打赏
  • 举报
回复
string.GetBuffer()
  • 打赏
  • 举报
回复
http://blog.163.com/h_sc2011/blog/static/204543014201221905954582/ CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换 (UNICODE版本字符串转换为Ansi版本)
「已注销」 2014-07-13
  • 打赏
  • 举报
回复
CString有一个GetBuffer()的成员函数返回其内部的字符指针
bug_________ 2014-07-13
  • 打赏
  • 举报
回复
类型不匹配..

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧