从LPCTSTR转换为wchar *

时间:2013-09-09 18:56:49

标签: visual-c++

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

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

使用Visual Studio 2k8。

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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

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