2010-08-02 110 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