0
BYTE name[1000];

在我的visual c++项目中,有一个name使用BYTE数据类型定义的变量。如果我没有错,那么BYTE就相当于unsigned char。现在我想将其转换unsigned char *LPCTSTR.

我该怎么做?

4

2 回答 2

3

LPCTSTR被定义为char const*或者wchar_t const*基于是否UNICODE被定义。

  • 如果UNICODE已定义,则需要使用. 将多字节字符串转换为宽字符字符串MultiByteToWideChar

  • 如果UNICODE没有定义,一个简单的转换足够了:static_cast< char const* >( name ).

这假设这name是一个以空结尾的 c-string,在这种情况下定义它BYTE是没有意义的。你应该使用CHARor TCHAR,这取决于你是如何操作的name

于 2012-12-31T06:44:38.760 回答
1

您还可以直接将“名称”变量分配给 CString 对象,例如:

CString strName = name;

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

LPCTSTR pszName = strName.GetString();
于 2013-03-25T10:31:56.937 回答