在网上找了三个方法可还是不行,调用有时返回空有时内存出错。
请问有什么好的方法啊?

解决方案 »

  1.   

    将char * 作为参数传出,用printf 或者strcpy将CSstring拷贝给char *就可以了
      

  2.   

    char chs[100];
    sprintf(chs,str);
      

  3.   

    char chs[100];
    CString str("134");
    sprintf(chs,str);void CDlgcsdn20Dlg::OnButton2() 
    {
    char chs[100];
    CString str("134");
    //sprintf(chs,str);
    strcpy(chs,str);

    }技术上可行
    符合你的要求吗?
    如果不明白,你可以
    (1),给我发短消息(请附帖子的地址).
    (2),根据http://www.vcshare.net上的联系方式与我联系,推荐QQ.
    (3),如果问题简单,请在http://www.vcshare.net/bbs上发帖.
        如果问题比较复杂,请把代码压成*.rar当附件发在我的论坛上发帖.
        同时在www.csdn.net上发帖,并给出在我的论坛的链接.
    ---------------
    压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps.
      

  4.   

    说的具体点啊,是要把CString 转换成char 数组吗?那你就char pFileName[256];CString str;str="jkdjffdsf";strcpy(pFileName,str);就可以了 。
      

  5.   

    char* pszText=szText.GetBuffer();
      

  6.   

    CString str;
    char* buf;
    char buf1[100];
    str = _T("2008北京奥运"); 
    buf = (LPSTR)(LPCTSTR)str;
    memset(buf1, 0, sizeof(buf1));
    strcpy(buf1, str);
      

  7.   

    BYTE *CSDTFILE::string2unchar(CString strValue, int istrLength)
    {
    /*
    *********************************************************************
    * 函数说明:将CString型变量转换为unsigned char型——1
    * 输 入 值:strValue -> 传入的 CString 值
    * istrLength -> CString值的长度
    * 输 出 值:转换后的 unsigned char 值
    * 编 写 人:
    * 创建时间:2004-10-09 pm
    *********************************************************************
    */ BYTE *btValue = new BYTE[istrLength];
    memcpy((char *)btValue, strValue.GetBuffer(0), istrLength);
    strValue.ReleaseBuffer(); return btValue;
    }bool CSDTFILE::string2unchar(CString strValue, int istrLength, BYTE *& returnByte)
    {
    /*
    *********************************************************************
    * 函数说明:将CString型变量转换为unsigned char型——2
    * 输 入 值:strValue -> 传入的 CString 值
    * istrLength -> CString值的长度
    * 输 出 值:转换后的 unsigned char 值
    * 编 写 人:
    * 创建时间:2004-10-09 pm
    *********************************************************************
    */ returnByte = new BYTE[istrLength+1];
    memcpy((char *)returnByte, strValue.GetBuffer(0), istrLength);
    strValue.ReleaseBuffer();
    returnByte[istrLength] = '\0';

    return true;
    }希望对你有所帮助
      

  8.   

    CString st("aaaa");
             char* send;
    send = st.GetBuffer( st.GetLength() );
      

  9.   

    GetBuffer
    用完了记得ReleaseBuffer
      

  10.   

    CString csSrc = "123";
    char szBuffer[200];
    memset(szBuffer,0,200);
    strcpy(szBuffer,csSrc.GetBuffer(csSrc.GetLength()));这样就可以了.
      

  11.   

    CSting cs("xxx");
       char ch[100]={0};
     1. strcpy(ch,cs);
     2. sprintf(ch,cs);
     都可以
      

  12.   

    不好意思,这些大多都行,可是我的程序还是有问题,看来不是CString to char * 的问题了,烦!
      

  13.   

    CString str;
    char buf[200];
    ::strcpy(buf,str);
      

  14.   

    CSting str;
    char *p;
    p=str.GetBuffer(MAX_PATH);
    str.ReleaseBuffer();