我有一个c ++应用程序,我需要将LPCTSTR转换为wchar *。
是否有执行此转换的功能?
使用Visual Studio 2k8。
谢谢
答案 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有很好的代码示例。