Hayri Uğur Koltuk
Hayri Uğur Koltuk

Reputation: 3020

how to test if CComBSTR is empty

How to test if a CComBSTR is an empty string? (with no 'text' value, can be "" or can be null)

my ideas:

  1. test if CComBSTR::ByteLength() returns 0
  2. test if CComBSTR::GetStreamSize() returns 0
  3. test if CComBSTR::m_str is NULL
  4. test if CComBSTR::Length() returns 0

which one is correct approach? if none of them is, then what is correct approach?

thanks.

Upvotes: 3

Views: 3191

Answers (2)

Stephen Quan
Stephen Quan

Reputation: 26001

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 */ }

Upvotes: 0

Tom
Tom

Reputation: 44831

4) Test length 0 it's fast as it's stored

Upvotes: 2

Related Questions