STL map<char*,void*> 的find问题

map<char*,void*> _map;
void* ptr;
_map[filename] = ptr;
load_resource(char* filename)
{
	std::string s(filename);
	char* t = (char*)s.c_str();
        
        //直接find(filename)和find(t)的结果不一样,一个找得到,一个找不到
	map::iterator it = _map.find(t);
        
	if(_map.end() != it)
	{
	    //find
	}
        else
        {
            //not find
        }
        //code

}
问题见代码注释。求解,谢谢。
但是为啥这个代码运行正常?
load_resource(char* filename)
{

	map::iterator it = _map.find(filename);
        
	if(_map.end() != it)
	{
	    //find
	}
        else
        {
              _map[filename] = ptr;            //not find
        }
        //code

}
load_resource("aaa");//这次调用not find,于是使用这个key创建了这个项目
load_resource("aaa");//这次调用find

答案:

因为当你用char*当key的时候,key实际上是那个指针的值,所以你用string来一下当然是要失败。如果你要用char*的内容当key的话,你必须写成map<string, void*>。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值