Visual c++ 如何在visualc++;?

Visual c++ 如何在visualc++;?,visual-c++,pointers,casting,bytearray,Visual C++,Pointers,Casting,Bytearray,在我的visualc++项目中,有一个用BYTE数据类型定义的变量name。如果我没有错的话,字节相当于无符号字符。现在我想把这个无符号字符*转换成LPCTSTR 我应该怎么做?LPCTSTR根据是否定义了UNICODE定义为char const*或wchar\u t const* 如果定义了UNICODE,则需要使用MultiByteToWideChar将多字节字符串转换为宽字符字符串 如果未定义UNICODE,则简单的强制转换就足够了:static\u cast(name) 这假设nam

在我的
visualc++
项目中,有一个用
BYTE
数据类型定义的变量
name
。如果我没有错的话,
字节
相当于
无符号字符
。现在我想把这个
无符号字符*
转换成
LPCTSTR


我应该怎么做?

LPCTSTR
根据是否定义了
UNICODE
定义为
char const*
wchar\u t const*

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

  • 如果未定义
    UNICODE
    ,则简单的强制转换就足够了:
    static\u cast(name)


这假设
name
是一个以null结尾的c字符串,在这种情况下定义它
BYTE
是没有意义的。您应该使用
CHAR
TCHAR
,这取决于您对
name
的操作方式
LPCTSTR
根据是否定义了
UNICODE
定义为
CHAR常量*
wchar\t常量*

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

  • 如果未定义
    UNICODE
    ,则简单的强制转换就足够了:
    static\u cast(name)


这假设
name
是一个以null结尾的c字符串,在这种情况下定义它
BYTE
是没有意义的。您应该使用
CHAR
TCHAR
,根据您对
name

的操作方式,您还可以直接将“name”变量分配给CString对象,如:

BYTE name[1000];
然后,您可以调用CString的GetBuffer()或者更好的GetString()方法,后者更适合于获取LPCTSTR。优点是CString类将自动执行您所需的任何转换。无需担心Unicode设置

CString strName = name;

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

BYTE name[1000];
然后,您可以调用CString的GetBuffer()或者更好的GetString()方法,后者更适合于获取LPCTSTR。优点是CString类将自动执行您所需的任何转换。无需担心Unicode设置

CString strName = name;

你真的不应该,因为BYTE不是必需的,TCHAR-@AlexeiLevenkov实际上这是一个项目,我必须更新它。所以我不能用它TCHAR:(你真的不应该,因为字节不是必需的TCHAR-@AlexeiLevenkov实际上这是一个项目,我必须更新它。所以我不能用它TCHAR:(