How to test if a CComBSTR
is an empty string? (with no 'text' value, can be ""
or can be null
)
my ideas:
- test if
CComBSTR::ByteLength()
returns 0 - test if
CComBSTR::开发者_如何学GoGetStreamSize()
returns 0 - test if
CComBSTR::m_str
is NULL - test if
CComBSTR::Length()
returns 0
which one is correct approach? if none of them is, then what is correct approach?
thanks.
4) Test length 0 it's fast as it's stored
3) test if CComBSTR::m_str is NULL
If you check the source code of CComBSTR there's several operators you can use to do this test:
bool CComBSTR::operator!() const throw()
bool CComBSTR::operator!=(int nNull) const throw()
bool CComBSTR::operator==(int nNull) const throw()
operator CComBSTR::BSTR() const throw()
For example:
CComBSTR value;
if (!value) { /* NULL */ } else { /* not NULL */ }
if (value != NULL) { /* not NULL */ } else { /* NULL */ }
if (value == NULL) { /* NULL */ } else { /* not NULL */ }
if ((BSTR) value) { /* not NULL */ } else { /* NULL */ }
精彩评论