如题,还有就是char *psz只能在初始化时能够char *psz = "aaa"吗,以后就不能
psz = "bbb"了?谢谢解答

解决方案 »

  1.   

    1. strcpy()
    2. =
    3. XX.Format("%s",..);
      

  2.   

    psz = "bbb"的赋值是非法的,应该用strcpy
    以下用法是常用的:
    CString str_1 = "aaa";
    char Buf_1[1000] = "bbb";
    char *Buf_2 = "ccc"; // 相当于char Buf[4] = "ccc";
    CString str_2 = Buf_1;
    CString str_3 = Buf_2;
      

  3.   

    char *psz; 只是定义了一个指针,并没有分配内存,所以不能赋值;psz = new char[10];
    strcpy(psz, "hello");
    *psz = 'b';初始化时赋值,psz指向一字符串常量,其值不能改变
    char *psz = "hello";
    *psz = 'y';//errorCString 可以将一字符串常量,或数组赋给他,它会自动分配空间;
    CString str = "hello";
    char array[100];
    strcpy(array, "hello");
    str = array;
      

  4.   

    strcpy是通用的方法。
    另外,char* 可以赋给CString
    还有 char* = CString.GetBuffer()
      

  5.   

    1:
    char* str -> char str2[]  strcpy(str2,str); CString str ->char *str2 str2=(LPSTR)(LPCTSTR)str;
    其他各类转换直接等于就好了
    2:
    以后可以=
      

  6.   

    psz = "bbb"的赋值是非法的,应该用strcpy
     上面这句话不同意。 // 初始值
      char * psz = "aaa" ;
     // 另外的地方
      psz = "bbb" ;  // 我认为是正确的 因为这里psz是一个指针,它的值是可以修改的。如果psz是一个字符数组,即
     char psz[] = "aaa" ;
    这样的时候,就不能在其他地方
     psz = "bbb" ;  // 非法
      

  7.   

    char* ,char array[100],这些用C函数就可以
    CString 可以直接赋值,比如,char aa[]="MyString";CString csMyString=aa;
    CString类会给你自动构造的,多看一下基础的,C++ Primer和Thinking in C++就很好
      

  8.   

    psz = "bbb"的赋值是非法的,应该用strcpy
    以下用法是常用的:
    CString str_1 = "aaa";
    char Buf_1[1000] = "bbb";
    char *Buf_2 = "ccc"; // 相当于char Buf[4] = "ccc";
    CString str_2 = Buf_1;
    CString str_3 = Buf_2;
      

  9.   

    我认为
    psz = "bbb";
    是正确的,psz是一个指针,"bbb"也是一个指针,可以赋值
      

  10.   

    char * psz = "aaa" ;   // 初始值 
    psz = "bbb" ;     // 完全可以。因为原来psz指向"aaa", 现在psz指向"bbb"
                      //  这是完全合法的。psz[0] = 'A' ;    //  这个编译不会出错,但是运行就出错,因为psz指向的是一个
                      //  常量,不能被修改。
      

  11.   

    char psz[] = "aaa" ;  // 初始值
    psz = "bbb" ;  // 非法,因为,psz是一个数组的首地址,其值本身是一个常量,
                   // 不能被修改, 这句编译就不能通过
    psz[0] = 'A' ; // 合法。所以,char * psz = "aaa" 和char psz[] = "aaa" 是有很大区别的。
      

  12.   

    A_Qiao()所说正确,其实 char* psz = "aaa" 与 char psz[] = "aaa" 有很大区别!
    其中 *psz在某些程序上相当于静态数据,可以用作返回值。
    而psz[]则是动态数据,不能做为返回值。
      

  13.   

    A_Qiao讲得不错。明白了很多东西
    LPCSTR和LPSTR有什么区别?
      

  14.   

    因为psz指向的是一个常量,所以psz="bbb",是不合法的
      

  15.   

    MSDN的说明:
    LPCSTR   A 32-bit pointer to a constant character string.
    LPSTR   A 32-bit pointer to a character string.
    LPCTSTR   A 32-bit pointer to a constant character string that is portable for Unicode and DBCS.
    LPTSTR   A 32-bit pointer to a character string that is portable for Unicode and DBCS.
      

  16.   

    to : sailor_2002(我心依旧)
       psz指向的是一个常量,但是psz本身不是一个常量,是可以被修改的,所以psz="bbb",是合法的。
      

  17.   

    ymbymb 说的
    char *psz; 只是定义了一个指针,并没有分配内存,所以不能赋值;
    psz = new char[10];
    strcpy(psz, "hello");
    *psz = 'b';
    不对。
    一旦定义了char* psz,就为psz分配了内存,但是这个内存里面存放的地址(因为它是指针变量,所以存放地址)没有指定,也就是说psz的值不知道是什么。就好像int i;定义时为i分配了内存,但是i的置却没有指定一样,不知道说得对否?
      

  18.   

    同意 A_Qiao()  。 char * const pstr="aaa";,才不能重新指定pstr="bbb";
    因为指针是const的。
    程序:
    void main()
    {
    char   * pstr="aaa";
    pstr="bbb";
    }//passed.
    void main()
    {
      char const * pstr="aaa";
      pstr="bbb";
    }//passed.
    void main()
    {
       char * const pstr="aaa";
       pstr="bbb";
    }//can not passed.
    }
      

  19.   

    我来说说我经常的用法哦
    CString str;
    char * chararray;
    chararray=str.GetBuffer(str.GetLength());
    很方便,我就经常这么用,呵呵
      

  20.   

    1.=薄荷
    2。char *psz只能在初始化时能够char *psz = "aaa"吗,以后就不能
    psz = "bbb"了?
    =======================================
    非法,一般当char *psz还没有确定psz时候,应该char *psz = NULL;
    用到的时候再new,赋值,最后delete []psz;
      

  21.   

    同意楼上,关于CString和char[]的问题好多