2011-09-13 76 views
5

我有一個包含BSTR的變體,但有時BSTR是「」(空),所以如何避免這種情況?我試過類似的東西:檢查一個BSTR是否爲空

variant.bstrVal != NULL 

但它沒有奏效。

回答

17

使用SysStringLen

if (SysStringLen(variant.bstrVal) == 0) 
{ ... } 
-1

您可以測試VARIANTvt成員VT_NULLVT_EMPTY

if (variant.vt != VT_NULL) 
{ 
    ... 
} 
+0

這是不正確;一個空的變體與設置爲「VT_BSTR」的變體不同,其空字符串爲 –

+0

@ M.M對於誤讀該問題表示歉意。然而,對'VT_EMPTY'的測試應該可以做到。 –

+0

VT_EMPTY與VT_BSTR也不同。這個問題意味着已知'variant.vt == VT_BSTR'。 –