2010-08-02 63 views
2

我看到了如何使用MFC来做到这一点,但是什么是仅使用win32库将LPSTR转换为BSTR的最佳方式。使用win32将LPSTR转换为BSTR

+2

的MultiByteToWideChar + SysAllocString – Luke 2010-08-02 16:50:14

回答

3
#include <comutil.h> 

LPSTR myLpstr = "Hello World!"; 
_bstr_t bstr = _bstr_T(myLpstr); 

它还需要图书馆comsupp.lib

+0

他说: “只有在Win32库” 。 – 2010-08-02 14:53:51

+1

“comsupp.lib”用于“COM支持”。 COM是Win32的一部分。 – 2010-08-02 14:58:42

+0

同意,但你应该使用comsuppw.lib(它在API中使用wchar_t *而不是unsigned short *)。它实际上不是一个Win32库(不在PSDK中,没有匹配的DLL),而是一个Visual C++静态库。因此,您不需要分发MFC,但它仍然不可移植到MingW – MSalters 2010-08-03 08:01:51

2

使用SysAllocString

请注意,SysAllocString采用OLECHAR*参数,该参数实际上是WCHAR*而不是CHAR*。这应该不会成为一个问题,除非您在编译时没有定义UNICODE - 但不要这样做。

+1

UNICODE是否已定义不会对LPSTR产生任何影响。你需要展示如何转换字符串。 – 2010-08-02 15:44:54

+0

-1,在这里同意Hans Passant。 Unicode定义影响'LPTSTR',而不是'LPWSTR'或'LPSTR'。因此,这个答案缺失了困难的部分。 – MSalters 2010-08-03 07:56:03