在没有强制转换的情况下使用带有wcscmp功能的CComBSTR是否安全?

lm.*_*lm. 3 c++ com

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

CComBSTR bs1=L"str1";
if (wcscmp(bs1,L"str2"))
{ 
 ....
} 
Run Code Online (Sandbox Code Playgroud)

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

据我所知,从MSDN中没有CComBSTR的显式强制转换操作符(对于_bstr_t存在)提前感谢

Han*_*ant 6

技术上不,一个BSTR可以存储L"str2\0foo".这将wcscmp()决定匹配,你还必须比较字符串长度以避免这种失败模式.

CComBSTR 覆盖operator ==()做正确的事情,不妨使用它:

CComBSTR bs1=L"str1";
if (bs1 == L"str2"))
{ 
    // etc..
}
Run Code Online (Sandbox Code Playgroud)