请问如何将CString转换成char

解决方案 »

  1.   

    CString mystr;
    char mychar[100];
    mystr="csdn";
    AfxMessageBox(mystr);
    sprintf(mychar,"%s",mystr);
    AfxMessageBox(mychar);
      

  2.   

    CString转化为char?
    CString::GetAt  这个返回一个 char如果是要char *
    可以用CString:Getbuffer   这个返回一个 char *
    其实还可以强制转化:
    LPCTSTR pch;
    CString str("123456");
    pch = (LPCTSTR)str;
      

  3.   

    wdxp119() 的代码实际上就是先让系统执行了一次强制转化的结果,所以其实有点多此一举了……
      

  4.   

    CString str;
    char* c;
    c = (LPSTR)(LPCTSTR)str;
      

  5.   

    楼上的方法也可以,一般就GetBuffer(0)就OK了。
      

  6.   

    CString str
    char* c;
    c = str.GetString();
    这样是否可以呢?
      

  7.   

    CString str;
    char* c;
    c = (LPSTR)(LPCTSTR)str;
      

  8.   

    char *pBuffer = (LPSTR)(LPCTSTR)str;
      

  9.   

    上面都对,更长采用char *pBuffer = (LPSTR)(LPCTSTR)str;方式
      

  10.   

    CString str;
    char szBuffer[100];str = "abcdefg";for (int i = 0; i < str.GetLength(); i++)
    {
        szBuffer[i] = str[i];
    }
      

  11.   

    回复人: pomelowu(羽战士) ( ) 信誉:124  2005-01-07 10:49:00  得分: 0  
    wdxp119() 的代码实际上就是先让系统执行了一次强制转化的结果,所以其实有点多此一举了……他这样做更安全一些,因为char *pBuffer = (LPSTR)(LPCTSTR)str;这样转换,只是让char指针指向了ctring的内存地址,如果对char进行了写操作的话,因为跨越了cstring的封装,有可能导致cstring对象的混乱,所以重新copy一个新的给char指针,可以做到更安全!       如果只读不写,用char *pBuffer = (LPSTR)(LPCTSTR)str;就够了!
      

  12.   

    简单一点就是
    char *pBuffer = (LPSTR)(LPCTSTR)str
      

  13.   

    To ncucf(ncu晨风) 
    我没说清楚。因为前面鸟人已经指出来用GetBuffer了,所以我说wdxp119的代码多此一举。编辑GetBuffer获得的char *是安全的。记得要ReleaseBuffer