2

CComBSTRが空の文字列であるかどうかをテストするにはどうすればよいですか?('text'値なし、 ""またはnullの場合があります)

私のアイデア:

  1. CComBSTR::ByteLength()0を返すかどうかをテストします
  2. CComBSTR::GetStreamSize()0を返すかどうかをテストします
  3. CComBSTR::m_strがNULLかどうかをテストします
  4. CComBSTR::Length()0を返すかどうかをテストします

どちらが正しいアプローチですか?それらのどれもそうでない場合、正しいアプローチは何ですか?

ありがとう。

4

2 に答える 2

2

4)テストの長さ0保存されているので高速です

于 2011-06-17T09:42:33.270 に答える
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 */ }
于 2014-10-07T11:42:37.447 に答える