2013-05-17 100 views
3

這是我需要轉換BSTR到LPCWSTR

BSTR l_strArgs; 
LPCWSTR sth; 
//---- 
//--- 
OutputDebugStringW(sth); 

如何轉換BSTR到LPCWSTR?

是否有任何標題只有庫將任何字符串類型(微軟)轉換爲LPCWSTR類型?

+0

的可能重複[ATL如何轉換BSTR \ * STR註冊表key.SetValue(LPCTSTR STR型(HTTP://計算器.COM /問題/ 7654998/ATL-如何對轉換-BSTR-STR對註冊表鍵setvaluelpctstr-STR型) –

回答

6

剛好蓋住NULL的情況,你是好去

BSTR l_strArgs; 
LPCWSTR sth = strArgs ? strArgs : L""; 

至於你提到的標籤ATL,這裏是ATL風格的一行:

OutputDebugString(CString(l_strArgs)); 

,或者使確定你在Unicode域中:

OutputDebugStringW(CStringW(l_strArgs)); 
0

當你使用類似_bs的包裝時,BSTR變得更容易處理而不是tr_t。這裏是他們的微軟文檔 http://msdn.microsoft.com/en-us/library/zthfhkd6%28v=VS.100%29.aspx

正如你所料,其中一個_bstr_t構造函數需要一個BSTR參數。還有一個操作符返回一個const wchar_t *,你應該可以將它轉換爲LPCWSTR。

希望這有助於

2

我剛剛發現這個一個

BSTR l_strArgs; 
LPCWSTR sth; 
CString cs(_com_util::ConvertBSTRToString(l_strArg)); 
sth = cs; 
OutputDebugStringW(sth);