我有以下问题
考虑遵循以下C++代码段

CComBSTR bs1=L"str1";
if (wcscmp(bs1,L"str2"))
{
 ....
}

问题是:在不强制转换的情况下在wcscmp函数中使用CComBSTR是否安全?

正如我从MSDN所知,CComBSTR没有显式的强制转换运算符(而_bstr_t存在)
提前致谢

最佳答案

从技术上讲,BSTR可以存储L"str2\0foo"。这将使wcscmp()决定要匹配的内容,您还必须比较字符串长度,以避免这种失败模式。
CComBSTR会覆盖operator ==()来做正确的事,不妨使用它:

CComBSTR bs1=L"str1";
if (bs1 == L"str2"))
{
    // etc..
}

07-26 00:45