加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 从LPWSTR转换为LPTSTR

发布时间:2020-12-16 09:41:02 所属栏目:百科 来源:网络整理
导读:我试图将参数LPWSTR转换为LPTSTR,那么我可以使用任何库来进行简单的字符串转换吗? 解决方法 如果定义了_UNICODE,则无法进行转换 – TCHAR是WCHAR,LPWSTR是LPTSTR;否则,TCHAR是CHAR,LPTSTR是LPSTR.在最后一种情况下,您可以使用 WideCharToMultiByte API将LPW
我试图将参数LPWSTR转换为LPTSTR,那么我可以使用任何库来进行简单的字符串转换吗?

解决方法

如果定义了_UNICODE,则无法进行转换 – TCHAR是WCHAR,LPWSTR是LPTSTR;否则,TCHAR是CHAR,LPTSTR是LPSTR.在最后一种情况下,您可以使用 WideCharToMultiByte API将LPWSTR(即Unicode字符串)转换为“窄”字符串.

此外,您可以使用wcstombs C库函数,假设Windows类型CHAR和WCHAR映射到C类型char和wchar_t(在VC中肯定是这种情况),并且当前C语言环境是您打算使用的语言环境转换.

另请参阅Alf关于此事的更多见解的评论 – 最重要的一点是,如果可以,您应该避免这种转换,因为您的输出编码通常不能忠实地表示输入,并且,取决于您的字符串代表什么,这可能意味着乱码文本以及找不到所需文件,或者更糟糕的是,在错误的路径上操作.

因此,将项目设置为使用Unicode(如@ prazuber的答案)并始终尝试使用支持Unicode的API,以避免这种转换.

但请记住,仅使用Unicode版本的Windows API可能意味着失去与Windows 9x的兼容性;对于绝大多数情况,这不是问题,但如果在您的应用程序中支持此类操作系统至关重要,请检查您使用的API是否在MSLU中受支持.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读