Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将char[]转换为LPCTSTR?_C++_Winapi - Fatal编程技术网

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
    宏来处理字符串文字

  • 取消UNICODE的定义,并在不支持宽字符的情况下构建项目(相反,您可以保留对它的定义,并使用宽字符集而不是ANSI)

  • 执行从单字节字符集到多字节字符集的转换。您可以找到有关字符集和转换函数的更多信息


  • 第四个选项是使用
    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