首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从LPWSTR转换为LPTSTR

从LPWSTR转换为LPTSTR
EN

Stack Overflow用户
提问于 2012-12-17 00:38:02
回答 2查看 11.6K关注 0票数 4

我正在尝试将参数LPWSTR转换为LPTSTR,有没有什么库可以让我使用它来进行简单的字符串转换?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-17 00:58:59

如果定义了_UNICODE,则无需进行转换- TCHARWCHARLPWSTRLPTSTR;否则,TCHARCHARLPTSTRLPSTR。在最后一种情况下,您可以使用Unicode将LPWSTR (即Unicode字符串)转换为“窄”字符串。

此外,您还可以使用Windows库函数,前提是wcstombs类型CHARWCHAR映射到C类型charwchar_t (在VC++中肯定就是这种情况),并且当前的C语言环境是您打算用于转换的语言环境。

另请参阅Alf的评论,以了解更多关于这个问题的见解--最重要的一点是,如果你可以,你应该避免这样的转换,因为你的输出编码通常不能真实地表示输入,根据你的字符串代表什么,这可能意味着乱码文本,以及找不到所需的文件,或者更糟糕的是,在错误的路径上操作。

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

不过,请记住,仅使用Windows的Unicode版本可能意味着失去与Windows9x的兼容性;这在绝大多数情况下不是问题,但如果在应用程序中支持这样的OSes很重要,请检查MSLU是否支持您正在使用的API。

票数 7
EN

Stack Overflow用户

发布于 2012-12-17 00:51:57

LPTSTR的定义如下:

代码语言:javascript
复制
#ifdef UNICODE
 typedef LPWSTR LPTSTR;
#else
 typedef LPSTR LPTSTR;
#endif

因此,您需要做的就是将字符集转换为Unicode。例如,在Visual Studio中,您可以转到“配置”>“属性”>“常规->字符集”>“Use Unicode Character Set ->”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13903297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档