在 VC++ 中将 TCHAR 转换为 LPWSTR?
Posted
技术标签:
【中文标题】在 VC++ 中将 TCHAR 转换为 LPWSTR?【英文标题】:Convert TCHAR to LPWSTR in VC++? 【发布时间】:2011-02-28 12:01:13 【问题描述】:如何
例如:我有
TCHAR achValue[16383];
我想将此值分配给 LPWSTR 。 如何在 VC++ 中实现这一点
感谢任何帮助。
【问题讨论】:
你为什么首先使用TCHAR
?如果您的目标是任何现代版本的 Windows,您应该使用 wchar_t
。
我不得不在旧的 ANSI 项目中复制代码,而 TCHAR 使这变得容易得多。
【参考方案1】:
TCHAR
是 char
或 wchar
_t,具体取决于您的项目 Unicode/MBCS 设置。如果您正在编译为 unicode,achValue
可以用作LPWSTR
。如果没有,您需要使用MultiByteToWideChar
将achValue
中的字符从您使用的编码转换为UTF-16。
【讨论】:
【参考方案2】:如果您的项目文件定义了UNICODE
标志,那么您可以简单地使用LPWSTR p = achValue;
【讨论】:
不,我使用的是多字节字符集【参考方案3】:您需要设置一个#ifdef
'd 部分来处理这两种情况:一个用于定义 UNICODE(意味着TCHAR
定义为wchar_t
),另一个用于未定义(你必须使用MultiByteToWideChar
来转换它)。
【讨论】:
以上是关于在 VC++ 中将 TCHAR 转换为 LPWSTR?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 vc++ 中将 char* 转换为 LPWSTR..........................? [复制]