Win32转码问题 Unicode下CString转LPSTR

wangyushun0997 2017-01-05 05:36:34
第一种:强制转换
CString fileName;
LPSTR lpStr = (LPSTR)(LPCTSTR)fileName;

第二种:CString fileName;
LPSTR lpStr = fileName.GetBuffer();
fileName.ReleaseBuffer();
在多字节环境下 两种方法行的通 ,但项目需求,必须在Unicode(两种均失败)下转码,求救!!!
...全文
1210 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
示申○言舌 2017-01-09
  • 打赏
  • 举报
回复
转换UNICODE到ANSI需要用转换函数,直接这么转是不行的,类型都不一样。。
  • 打赏
  • 举报
回复
在多字节下LPTSTR和LPCTSTR对应的都是char* 中间多个C其实就是const 在unicode下对应的就是wchar_t* 所以问题的实质是,将char*转换LPWSTR (即wchar_t*),自己去查MultiByteToWideChar http://blog.163.com/tianshi_17th/blog/static/4856418920085209414977/ 要“自适应”那么就用MFC中的LPTSTR和LPCTSTR,也就是带T的 LPTSTR lpStr = _T("文件名") 如果用变量,可以自己封装个函数,不过个人觉得这种自适应有点蛋疼,稍微解决了代码移植的问题

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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