我有以下问题请考虑遵循C++代码段
CComBSTR bs1=L"str1";
if (wcscmp(bs1,L"str2"))
{
....
}
Run Code Online (Sandbox Code Playgroud)
问题是:在没有强制转换的情况下在wcscmp函数中使用CComBSTR是否安全?
据我所知,从MSDN中没有CComBSTR的显式强制转换操作符(对于_bstr_t存在)提前感谢
技术上不,一个BSTR可以存储L"str2\0foo".这将wcscmp()决定匹配,你还必须比较字符串长度以避免这种失败模式.
CComBSTR 覆盖operator ==()做正确的事情,不妨使用它:
CComBSTR bs1=L"str1";
if (bs1 == L"str2"))
{
// etc..
}
Run Code Online (Sandbox Code Playgroud)