如何在c ++中从LPCSTR转换为LPCWSTR

and*_*mag 6 c++ winapi

附加信息我正在构建一个使用WinHttpOpenRequest Api的应用程序,它需要LPCWSTR作为对象名称并使用visual studio 2008

Fer*_*cio 12

最简单的方法是使用ATL:

#include <Windows.h>
#include <atlbase.h>
#include <iostream>

int main(int argc, char *argv[]) {
    USES_CONVERSION;
    LPCSTR a = "hello";
    LPCWSTR w = A2W(a);
    std::wcout << w << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当函数退出时,将释放由A2W(ANSI到Wide)分配的任何内存.

  • 十多年前,这些ATL 3.0宏已被版本7.0 [ATL和MFC字符串转换宏](http://msdn.microsoft.com/en-us/library/87zae4a3.aspx)取代.其中,ATL 7.0宏不再需要使用`USES_CONVERSION`宏.另外,您可以使用const-correct变体,例如在您的示例中:`CA2W(a)`. (2认同)