如题

解决方案 »

  1.   

    CString str;
    char * p_str = str.GetBuffer(str.GetLength());
      

  2.   

    CString str="abcd";
    char *p;
    p=str.GetBuffer(str.GetLength()))
    str.ReleaseBuffer()
      

  3.   

    同上,其实GetBuffer()里面随便填一个值都可以.
      

  4.   

    char* buf;
    buf=new char[128];
    CString str="hello";
    sprintf(buf,"%s",str);
    AfxMessageBox(buf);
    delete [] buf;
      

  5.   

    我也碰到这个问题 最后就是使用strcpy来实现的
    char a[64];
    CString b=".........."
    strcpy (a,b) // or strcpy (&a[0],b)
    看了前几位的发言学到了 CString::GetBuffer() :>>>
      

  6.   

    有两种方法:
    一、GetBuffer,它要求必须使用之后ReleaseBuffer,因为麻烦些。
    二、下面方法最佳:CString str;
    char *pStr=(char *)(LPCTSTR)str;
      

  7.   

    同意 howtotell(天行健,君子以自强不息。) 他的方法规矩。
      

  8.   

    CString str;
    char *pStr=(char *)(LPCTSTR)str;
    我也每次都这样写的,或者
    CString str;
    char *pStr=(LPSTR)(LPCTSTR)str;
      

  9.   

    各位大大,好像没考虑到溢出的问题啊
    extern CString str;
    char * p = new char[256];
    memset(...);
    if(str.getlength() < 256 )
     strcpy(p,str);
    else
    {
     memcpy(...,255);
     p[255] = 0;
    }
      

  10.   

    如此多的方法,学习。
    我只用过 memcpy 和 (char *)(LPCTSTR)str
      

  11.   

    各位大大,好像没考虑到溢出的问题啊
    extern CString str;
    char * p = new char[256];
    memset(...);
    if(str.getlength() < 256 )
     strcpy(p,str);
    else
    {
     memcpy(...,255);
     p[255] = 0;
    }不对
    因如此
    extern CString str;
    char * p = new char[str.getlength() ]; strcpy(p,str);
    //USE p;
    delete p;
    p=NULL;
      

  12.   


    CString str;
    char * p = new char[str.getlength() +1 ]; strcpy(p,str);
      

  13.   

    今天终于是长见识了,一个这么简单的问题,方法这么多,没想到。我以前一直都是用的sprintf这种方法。看来我还是要努力学习。
      

  14.   

    最好不要用GETBUFFER
    要说的都说了,我来抢分!
      

  15.   

    太好了,长见识,我一直用GetBuffer()的!
      

  16.   

    CString str="abcd";
    char *p;
    p=str.GetBuffer(str.GetLength())+1)
    str.ReleaseBuffer()
      

  17.   

    char * p="abcd";
    CString str;
    str=p;