C++ 如何将char[]转换为LPCTSTR?
我用参数C++ 如何将char[]转换为LPCTSTR?,c++,winapi,C++,Winapi,我用参数LPCTSTR编写了winapi函数CreateFile的函数。如何将char[]转换为LPCTSTR并将其传递给func? 另外,我已经看到了其他主题,没有任何有用的内容LPCTSTR是const TCHAR*的宏TCHAR将是char或wchar\t(在旧版本的Visual C++中是无符号的short)取决于是否定义了UNICODE。您有几个选项: 使用TCHAR[]而不是char[]。您可以使用TEXT和T宏来处理字符串文字 取消UNICODE的定义,并在不支持宽字符的情况下构建
LPCTSTR
编写了winapi函数CreateFile
的函数。如何将char[]
转换为LPCTSTR
并将其传递给func?
另外,我已经看到了其他主题,没有任何有用的内容
LPCTSTR
是const TCHAR*的宏
TCHAR
将是char
或wchar\t
(在旧版本的Visual C++中是无符号的short
)取决于是否定义了UNICODE
。您有几个选项:
TCHAR[]
而不是char[]
。您可以使用TEXT
和T
宏来处理字符串文字第四个选项是使用
CreateFileW
(或CreateFileA
,具体取决于您的意愿),而不是CreateFile
(它将根据UNICODE
预处理器标志映射到前面提到的任何函数)。调用CreateFileA
(明确要求使用窄字符版本)并直接将char[]
传递给它,无需强制转换。我建议使用这些版本的宽版本,而不是T*
版本,除非您计划支持非常旧的Windows版本。[?它是char
或wchar\u t
@DavidHeffernan,wchar\u t
是无符号短
的typedef(不过,如果内存可用,他们在C++11-)中将其作为基本类型添加).@AlanStokes,如果您希望能够在使用和不使用UNICODE
预处理器的情况下进行编译。例如,如果您的应用程序不需要全球化,那么@Zac您建议使用unsigned short代替wchar_t?@Zac如果您需要在Windows上运行程序,则只使用TCHAR98@prozac现在你的程序被lam卡住了e ANSI字符集。你为什么要把它强加给你自己。我们其他人花了数年时间学习鄙视ANSI。现在是2014年。世界上不是每个人都会说英语。@David使用char
(可能是UTF8,但Windows会让人非常痛苦)。用户不必使用char