我编了一个函数:例子
int a()
{
 cstring a;
 a = "bn";
 g = a;(g是全局变量,char * g)
 a = "hh";
 AfxMessageBox(g)
 }
g就变成"hh",我如何解决这个问题

解决方案 »

  1.   

    CString temp;
    temp=a;
    g=a;
      

  2.   

    sorry,
    CString temp;
    temp=a;
    g=temp;
      

  3.   

    把g改为CString或者std::string类型。
      

  4.   

    改 char * g;,为 CString g;
      

  5.   

    g = a是把“bn“的首指针赋给g,当a=”hh“后,该首指针指向的字符串就成了"hh"
      

  6.   

    我的方法是:g=a改为g.Format("%s",a)
      

  7.   

    这个问题应该无法解决。g如果必须是char *,则g没有自己的存储空间,而是指向一个使用者定义的空间,那个空间不是g独有的,所以g的取值必定会被破坏。除非每个使用g的地方都使用一个独立的变量(这个变量不再修改)来存储字符串。
      

  8.   

    需要为g分配空间
    char g[128];
    ..........
    cstring a;
    a = "bn";
    strcpy( g, a.GetBuffer( a.GetLength() ) );