我有一个 c++ 应用程序,我需要将 LPCTSTR 转换为 wchar*。
是否有执行此转换的功能?
使用 Visual Studio 2k8。
谢谢
从评论中,您正在为 Unicode 进行编译。在这种情况下,LPCTSTR
评估为const wchar_t*
,因此不需要转换。如果您需要一个可修改的缓冲区,那么您可以分配一个并执行内存复制。这是有效的,因为字符串已经被编码在UTF-16
.
由于您使用的是 C++,因此将字符串存储在字符串类中而不是使用原始 C 字符串是有意义的。例如,您可以使用std::wstring
. 或者您可以使用MFC/ATL 字符串类。这些选项中的哪一个最适合您取决于您的代码库其余部分的具体情况。
LPCTSTR 可以是多字节或 Unicode,在编译时确定。WinNT.h 定义如下
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR
#endif
这意味着它已经由wchar
Rup 在评论中指出的那样组成。因此,您可能需要检查 UNICODE 并MultiByteToWideChar()
在未定义时使用。当然,您需要知道字符串使用的代码页,这取决于它的来源和来源。MultiByteToWideChar 文档有很好的代码示例。