如何测试CComBSTR是否为空

时间:2011-06-17 09:39:25

标签: string com visual-studio-2005 atl bstr

如何测试CComBSTR是否为空字符串? (没有'text'值,可以是“”或可以为null)

我的想法:

  1. 测试CComBSTR::ByteLength()是否返回0
  2. 测试CComBSTR::GetStreamSize()是否返回0
  3. 测试CComBSTR::m_str是否为NULL
  4. 测试CComBSTR::Length()是否返回0
  5. 哪一个是正确的方法?如果没有,那么什么是正确的方法?

    感谢。

2 个答案:

答案 0 :(得分:2)

4)测试长度0它存储的速度很快

答案 1 :(得分:0)

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