我在程序里对一个cstring变量赋了值,为什么另一个变量也被赋了同样的值?请大侠们指教

解决方案 »

  1.   

    没有了,就是最简单的操作,定义变量然后对其中一个赋值
    CString tempinfo;
    tempinfo=ServerName;
    tempservername="";
    后,tempinfo的值也被清空了,真不知道是为什么
      

  2.   

    CString ServerName;
    int32 BufSize=100;
    int32 NodeId=62085;
    int32 PortNum=5450;
    CString Node="";
    CString PortNumStr="";
    CMyPIAPI mypiapi;
    CString UserName="";

    CString tempservername;
    CString tempPassWord;
    unsigned short UserLen;
    CString PassWord;
    unsigned short PassLen;
    int32 valid;
    result=pilg_getconnectedserver(ServerName.GetBuffer(0),&BufSize,&NodeId,&PortNum,lSeq1);
    PortNumStr.Format("%d",PortNum);
    CString tempinfo;
    tempinfo=ServerName;
    tempservername="";
    tempinfo="PI,"+tempinfo;
    运行到这里,tempinfo的值应该是“PI,128.0.0.1”,但是实际却是“PI,”
      

  3.   

    ServerName到底是一个字符串常量还是一个变量阿?
      

  4.   

    to shiftqiang():
            ServerName是变量
      

  5.   

    ServerName的值是空。你给ServerName付值了吗?
      

  6.   

    to whp320(征服者):
               ServerName=“128.0.0.1”
      

  7.   

    result=pilg_getconnectedserver(ServerName.GetBuffer(0),&BufSize,&NodeId,&PortNum,lSeq1);这句里给ServerName赋值
      

  8.   

    就是跟踪了程序,才发现tempservername清空后tempinfo的值也为空了
      

  9.   

    CString ServerName;没有被赋值啊
      

  10.   

    result=pilg_getconnectedserver(ServerName.GetBuffer(0),&BufSize,&NodeId,&PortNum,lSeq1);
    问题在这句话
    ServerName作为指针传入, 并只开辟了0字节缓冲内存? 这样在函数内部被赋值, 是很危险的, 因为没有分配内存给ServerName, 所以, ServerName出来后仍然只是指向一个临时内存块而已, tempinfo=ServerName; // 对,是可以赋给它, 但CString之间的赋值,仅仅是一个引用赋值,因为ServerName指向临时内存块,所以,看下面一句:
    tempservername=""; // 当tempservername赋值为空后, 系统将ServerName临时内存块分配给tempservername, 这样临时内存块当然是'\0'喽.解决方法
    Servername作为引用传入函数!
      

  11.   

    太感谢yjgx007(who's superior)了,
    谢谢大家的关注