как проверить, если CComBSTR пуст - PullRequest
2 голосов
/ 17 июня 2011

Как проверить, является ли CComBSTR пустой строкой?(без значения 'text', может быть "" или может быть нулевым)

мои идеи:

  1. test if CComBSTR::ByteLength() возвращает 0
  2. test ifCComBSTR::GetStreamSize() возвращает 0
  3. тест, если CComBSTR::m_str равен NULL
  4. тест, если CComBSTR::Length() возвращает 0

, какой подход является правильным?если ни один из них не является правильным, то каков правильный подход?

спасибо.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

4) Тестовая длина 0 это быстро, поскольку это сохранено

0 голосов
/ 07 октября 2014

3) проверить, имеет ли CComBSTR :: m_str значение NULL

Если вы проверите исходный код CComBSTR, вы можете использовать несколько операторов для этого теста:

bool CComBSTR::operator!() const throw()
bool CComBSTR::operator!=(int nNull) const throw()
bool CComBSTR::operator==(int nNull) const throw()
operator CComBSTR::BSTR() const throw()

Например:

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