帮忙看看我的代码,map里面放CComBSTR,是否正确?
如下代码是否正确并安全?
const CComBSTR comStr1( L "RWUM " );
const CComBSTR comStr2( L "RWUH " );
const CComBSTR comStr3( L "RWUL " );
map <CAdapt <CComBSTR> , int> m;
m[comStr1] = 1;
m[comStr2] = 2;
m[comStr3] = 3;
if( m.find(comStr1) == m.end())
{
cout < < "fail " < < endl;
}
else
{
cout < < "ok " < < endl;
}
[解决办法]
去看《Effective STL》item21,map的key必须满足可排序语意。你得自己分析CAdapt <CComBSTR> 是否满足这个要求。
[解决办法]
能满足operator= 和operator <就可以。
[解决办法]
完全可以,不过用string(wstring)可能更好
[解决办法]
应该没什么太大问题,BSTR和char*的区别不是太大