我要建立個map﹐是字符串對應我自己定義的一個類﹐我是如下定義的﹕
CMap<char *,char *,MyClass,MyClass> map;現在我存入几個值到map中﹕
MyClass mc1,mc2,mc3;
map.SetAt("aaa",mc1);
map.SetAt("bbb",mc2);
...然后我想﹕
CString str="aaa";
MyClass mc=map[str.GetBuffer(str.GetLength())];
得到mf1,可是得不到﹐只能﹕
char *str="aaa";
MyClass mc=map[str];
或
MyClass mc=map["aaa"];
才行﹐我知道這是由于char *是指針引起的﹐可是不知道怎么解決﹐望高手指點啊
CMap<char *,char *,MyClass,MyClass> map;現在我存入几個值到map中﹕
MyClass mc1,mc2,mc3;
map.SetAt("aaa",mc1);
map.SetAt("bbb",mc2);
...然后我想﹕
CString str="aaa";
MyClass mc=map[str.GetBuffer(str.GetLength())];
得到mf1,可是得不到﹐只能﹕
char *str="aaa";
MyClass mc=map[str];
或
MyClass mc=map["aaa"];
才行﹐我知道這是由于char *是指針引起的﹐可是不知道怎么解決﹐望高手指點啊
解决方案 »
- 如何在一个VC对话框完全显示后,显示另一个对话框
- 按钮显示问题求助
- 在OnDraw里面如何获得当前主框架的菜单栏的颜色信息?
- 如何把视频AVI文件转换成单帧的位图以及位图转视频
- CDialogBar上的buttont 怎么让他disable?
- OO高级概念问题,超越OOD的OOA高手们请进来讨论一下。
- D3D为啥我不用RHW格式就显示不了图片,而用了之后就可以?
- 怎么获得资源管理在桌面的位置及大小?
- 哪里有“windows 95 通信编程”下载
- 如何在html页面中取得param的参数呢?我的问题不难但很着急。。。100分恭候,决不食言!
- 在dll中创建对话框的超难问题
- 如何在多文档中的MainFrame实现分割窗体
char strbuf[223];
strcpy(strbuf,str.GetBuffer(0));
MyClass mc=map[strbuf];
strcpy(p, "aaa");
map.SetAt("p, mc1);p = new char[255];
setcpy(p, "bbb");
map.SetAt("bbb",mc2); 退出的时候记得释放内存
mc=map[str] 中的str要求是個指針﹐我的理解是并不是要他們指向的值相等﹐而是要求他們本身相等﹐不知道怎么操作或改變map的定義可以達到我的要求(就是把一個字符串和我的一個自定義對象對應起來)
它比较的地址
如:
"aaa"的地址
而不是"aaa"的值
{
public:
int x ;
};
CMap<char *,char *,MyClass,MyClass> map;//現在我存入几個值到map中﹕void CDlg18Dlg::OnButton2()
{
MyClass mc1,mc2,mc3;
mc1.x = 1;
char * p1 = "aaa";
char p2[] = "aaa";
map.SetAt(p2,mc1);
mc2 = map[p1];
mc3 = map[p2];}mc2,mc3就不一样
因为p1,p2的值不相同,因为它们指向的值相同