您的位置:首页 > 编程语言 > C语言/C++

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

2016-12-16 18:34 411 查看
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*>。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++
相关文章推荐