1

我有一个 c++ 应用程序,我需要将 LPCTSTR 转换为 wchar*。

是否有执行此转换的功能?

使用 Visual Studio 2k8。

谢谢

4

2 回答 2

2

从评论中,您正在为 Unicode 进行编译。在这种情况下,LPCTSTR评估为const wchar_t*,因此不需要转换。如果您需要一个可修改的缓冲区,那么您可以分配一个并执行内存复制。这是有效的,因为字符串已经被编码在UTF-16.

由于您使用的是 C++,因此将字符串存储在字符串类中而不是使用原始 C 字符串是有意义的。例如,您可以使用std::wstring. 或者您可以使用MFC/ATL 字符串类。这些选项中的哪一个最适合您取决于您​​的代码库其余部分的具体情况。

于 2013-09-09T19:02:57.987 回答
0

LPCTSTR 可以是多字节或 Unicode,在编译时确定。WinNT.h 定义如下

#ifdef UNICODE
    typedef LPCWSTR LPCTSTR;
#else
    typedef LPCSTR LPCTSTR
#endif

这意味着它已经由wcharRup 在评论中指出的那样组成。因此,您可能需要检查 UNICODE 并MultiByteToWideChar()在未定义时使用。当然,您需要知道字符串使用的代码页,这取决于它的来源和来源。MultiByteToWideChar 文档有很好的代码示例。

于 2013-09-12T05:59:49.863 回答