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*>。
相关文章推荐
- STL中map的key能否用char *呢?当然可以! map<char *, char *>
- VS2010 编码问题 不能将参数 1 从“ATL::CStringT<BaseType,StringTraits>”转换为“const char *”
- stl--<map>的用法
- "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const"问题的解决办法
- Mongo的morphia读取Map<String, List<Object>>类型数据的问题
- - (void)deleteRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;删除报错问题
- map<char *, char *>的使用
- fastjson在将Map<Integer, String>转换成JSON字符串时,出现中文乱码问题
- 【Android】 Bundle里边存放List<Map<String,Bitmap>>的问题
- 题目1554:区间问题 map<int , vector<int> >的使用
- [已解决问题] Could not find class XXX referenced from method XXX.<YYY>
- 【Stackoverflow好问题】Map<Key,Value>基于Value值排序
- hdu 4941 stl的map<node,int>用法
- C++编程常见问题—error: passing 'const std::map<>]' discards qualifiers或pass-by-reference-to-const-map导致的“d
- <综合>java virtual machine launcher 提示 could not find the main class,program will exit 问题
- hdu 4941 stl的map<node,int>用法
- error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`v
- asp.net mvc 2 简简单单做开发 使用DataContext扩展方法Find<TEntity>(TEntity obj) 遇到的问题
- Android Intent传递Map<Integer,Bean>及List<Bean>类型值问题完美解决
- new List<Map<String,String>> 问题