我有以下问题
考虑遵循以下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..
}