比较两个CComBSTR的正确方法是什么?我试着用
bool operator ==(
const CComBSTR& bstrSrc
) const throw( );
然而,即使两个ComBSTR是相同的,它总是返回false。它无法正常工作。
我是否必须首先将 CComBSTRs 转换为ANSI字符串,然后使用strcmp?
谢谢!
-bc
答案 0 :(得分:6)
您应该使用VarBstrCmp
。
编辑:这实际上是CComBSTR::operator==
的作用,因此如果没有进一步的上下文,您的代码可能不正确。
答案 1 :(得分:2)
BSTR(以及CComBSTR)通常是Unicode字符串。您可以使用wcscmp()(或wcsicmp()进行不区分大小写的比较)。
请注意,封装的BSTR可以为null,这是空字符串的合法表示,这应该被视为特殊情况,否则您的程序可能会遇到未定义的行为(很可能只是崩溃)。
答案 2 :(得分:-1)
BSTRsAreEqual(BSTR bstr1, BSTR bstr2, VARIANT_BOOL* boolptrEqual)
{
CString s1, s2;
s1 = bstr1;
s2 = bstr2;
if (s1 == s2) {
*boolptrEqual = true;
} else {
*boolptrEqual = false;
}
}