2011-05-29 50 views
2

我複製的wstring到使用_bstr_t長度:如何獲得_bstr_t

_bstr_t name;   
SysFreeString(name); // Free previous string, if any. 
name = SysAllocString(Member[k].Membername); 

現在,以前我用「名」我要檢查它是否包含至少5個字符。換句話說,我想檢查它的長度。

我沒有找到「countof」或「len」或類似的東西。有沒有人有想法?

感謝, Lumpi

+0

什麼平臺呢?視窗? – 2011-05-29 10:56:52

+0

是的,Windows XP – Lumpi 2011-05-29 11:33:25

+0

你的代碼包含一個主要的錯誤:不要將諸如'SysFreeString'這樣的'BSTR'調用與'_bstr_t'混合在一起。 'SysFreeString'與C代碼中的'BSTR'一起使用;在C++中'_bstr_t'會爲你管理內存。特別是,'_bstr_t :: operator ='會爲你的舊字符串調用'SysFreeString',所以你的代碼中的錯誤有效地包含了一個雙重刪除的錯誤。類似地,'_bstr_t :: operator ='將爲新字符串調用'SysAllocString'並複製您的輸入,所以_your_'SysAllocString'泄漏。即你的bug也是內存泄漏。 – MSalters 2011-05-30 08:33:06

回答