2012-12-31 39 views
0
BYTE name[1000]; 

在我的visual c++项目中有一个变量name和​​数据类型。如果我没有错,那么​​相当于unsigned char。现在我想将此unsigned char *转换为LPCTSTR如何将unsigned char转换为visual C++中的LPCTSTR?

我该怎么做?

+1

你真的不应该作为一个字节是没有必要的TCHAR - http://stackoverflow.com/questions/321413/lpcstr-lpctstr-and-lptstr –

+0

@AlexeiLevenkov其实这是一个项目,我需要将其更新。所以我不能使用它TCHAR :( –

回答

3

LPCTSTR定义为char const*wchar_t const*,其基于UNICODE是否被定义。

  • 如果UNICODE定义,那么你需要的多字节字符串转换使用MultiByteToWideChar一个宽字符字符串

  • 如果UNICODE定义,一个简单的投就足够了:static_cast< char const* >(name)

这假定name空结尾的C字符串,在这种情况下,将其定义​​将毫无意义。您应该使用CHARTCHAR,根据您如何在name上操作。

1

您也可以直接指定“名称”变量CString对象,如:

CString strName = name; 

然后你就可以调用CString的的的GetBuffer()或者是更多更好地得到LPCTSTR甚至最好的GetString()方法。优点是CString类将自动执行任何需要的转换。无需担心Unicode设置。

LPCTSTR pszName = strName.GetString(); 
相关问题