Cstring str1("asf");
char *send;
send=new char[1000];
strcpy(send,(const char *)str1.GetBuffer());
....
程序中的部分代码如上 为什么经过上面的复制后在send里面只是第一字母不是应该吧str1的整个字符串都复制过去的么问题出在哪里 编译能通过 麻烦解答下 谢谢!

解决方案 »

  1.   

    应该全部复制过去了
    你后面加个AfxMessageBox(send);
    看内容是不是"asf"
      

  2.   

    char* send = str1.GetBuffer(str1.GetLength()+1)
      

  3.   


    CString str1("asf"); 
    char *send; 
    send=new char[1000]; 
    strcpy(send,(const char *)str1.GetBuffer(str1.GetLength())); 
    ////GetBuffer()带的参数不对。。要象这个一样。。
      

  4.   

    //你的工程是 unicode 工程?
      

  5.   

    直接这样:
    strcpy(send,(LPCTSTR)(LPTSTR)str1); 
      

  6.   

    就是从一个工程的edit控件里面取得数据CString,需要把CString变为char*字符串。。
      

  7.   

    还是不行 用AFXmessage测试 输出的也是只有第一字母 比的都没复制进去
      

  8.   

    CString strsend;
    CHAR *sendbuffer;
    sendbuffer=new CHAR[1000];

    GetDlgItemText(IDC_SEND,strsend);
    strcpy_s(sendbuffer,strsend.GetLength()+1,(const CHAR *)strsend.GetBuffer(0));
    AfxMessageBox((LPCTSTR)sendbuffer);
    代码上面你们说过的方法也是过了 都不行 怎么会是 用的是vs2008
      

  9.   

    CString strsend; 
    TCHAR *sendbuffer=new TCHAR[1000]; 
    //因为不清楚你的字符集,就用这个吧GetDlgItemText(IDC_SEND,strsend); _tcscpy(sendbuffer,(const TCHAR *)strsend.GetBuffer(0));
      

  10.   

    我也帮你试了好多种方法,最终找到一个方法,使用string中转一下,我做了个函数,你可以不用函数,直接用里面的代码也可以,我都给你放下面,祝你编程愉快。
    CString  strBuf("asf");  
    string str1= CString2string(strBuf); 
    sprintf(send,"%s",str1.c_str()); //这用什么都行了,什么memcpy,strcpy...等等转换函数
    static string CString2string(CString strSrc) 

    string strDes;
    #ifndef UNICODE 
    strDes = strSrc; 
    #else 
    USES_CONVERSION; 
    strDes = W2A(strSrc.LockBuffer()); 
    strSrc.UnlockBuffer(); 
    #endif 
    return strDes;
    }
      

  11.   

    使用string 加这个:
    #include <string>
    using namespace std;应该不要提醒了吧
      

  12.   

    wchar_t *wpTemp;
    wpTemp=strsend.GetBuffer(strsend.GetLength()+1);
    size_t sendnum=wcslen(wpTemp);
    size_t convertedChars = 0;
    CHAR *sendbuffer;
    sendbuffer=new CHAR[sendnum];
    wcstombs_s(&convertedChars,sendbuffer,sendnum,wpTemp,_TRUNCATE);
    找到解决办法了 但是问题还是很多 我这是在做课本的练习,用套接字编一个简单的聊天 上面这样转化后再用sendto发送出去,但是经过上面转化后 如果是英文就没问题 但是换成汉字在CString对象里,就不行了各位碰到过这种问题么 上面的代码验证是成功的 各位可以看看
      

  13.   

    成了 谢谢 用上面zcj的方法搞定了 谢谢了 我研究下怎么回事