我要建立個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 *是指針引起的﹐可是不知道怎么解決﹐望高手指點啊

解决方案 »

  1.   

    CString str = "aaa";
    char strbuf[223];
    strcpy(strbuf,str.GetBuffer(0));
    MyClass mc=map[strbuf];
      

  2.   

    char *p = new char[255];
    strcpy(p, "aaa");
    map.SetAt("p, mc1);p = new char[255];
    setcpy(p, "bbb");
    map.SetAt("bbb",mc2); 退出的时候记得释放内存
      

  3.   

    樓上的不行啊﹐char strbuf[223]定義了個strbuf的固定的指針﹐不會因為里面的值而改變﹐而
    mc=map[str] 中的str要求是個指針﹐我的理解是并不是要他們指向的值相等﹐而是要求他們本身相等﹐不知道怎么操作或改變map的定義可以達到我的要求(就是把一個字符串和我的一個自定義對象對應起來)
      

  4.   

    晕!
    它比较的地址
    如:
    "aaa"的地址
    而不是"aaa"的值
      

  5.   

    #include "afxtempl.h"class MyClass
    {
    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的值不相同,因为它们指向的值相同