OCX中,我想把char*转CString
报Unhandle exception in **.exe(MFC42D.dll):0xc0000005 Access Violation
代码如下:
byte OutData[256];
memset(OutData,0,sizeof(OutData));
memcpy(OutData,bTmpOutInfo,256);   //bTmpOutInfo为前面生成的数据,我把他拷贝到OutDatam_transOutData.Format("%s",OutData); //这就报错了?网上查了下,好像是堆栈或者内存溢出,但不知道怎么改,有高手知道么?

解决方案 »

  1.   

    试试这个 char* p=”feiqiang”;
             p[len(p)]=’\0’;
             Cstring str(p);
      

  2.   

    m_transOutData.Format("%s",OutData); //这就报错了?
    -------------------------------------------
    你的OutData是BYTE[]char* -> CString
    char buf[] = {"...."};
    CString strText(buf);
      

  3.   

    补充一下m_transOutData是我在MFC CLassWizard------Automation中定义的,需要初始化么?怎么初始化?
      

  4.   

    byte OutData[256];
    memset(OutData,0,sizeof(OutData));
    memcpy(OutData,bTmpOutInfo,256);CString strTest(OutData);我如果写成ls2位的写法,就报Cannot use __try in functions that require object unwinding 错了,真纠结
      

  5.   

    通过for 来做字节拷贝把这个怎么写
      

  6.   

    我用个中间变量
    CString strTest(OutData);   //中间变量  strTest 去接收OutData时可以成功的
    m_transOutData = CString(OutData);就是m_transOutData 这个变量无法赋值过去
      

  7.   

    BYTE OutData[256] = {'A', 'B', 'C', 'D', 'E', 'F', '\0'};
    char buf[256] = {0};
    memcpy(buf, OutData, 256);
    CString str(buf);
    AfxMessageBox(str);
      

  8.   

    Sorry
    BYTE OutData[256] = {'A', 'B', 'C', 'D', 'E', 'F', '\0'};
        char buf[256+1] = {0};
        memcpy(buf, OutData, 256);
        CString str(buf);
        AfxMessageBox(str);
      

  9.   

    谢谢VisualEleven的支持,我用你的方法,定义一个变量
    CString strTest(OutData); 
    这样做是可以的,但是
    m_transOutData = strTest;
    的时候还是报溢出的错误,所以我现在怀疑是m_transOutData 没初始化的问题,但是m_transOutData(CString)类型怎么初始化?
      

  10.   

    肯定是你buffer overrun了吧,你把byte数组,转换成LPTCSTR给format
    你打开memory看看有没有越界呀,
    不行发给我看看
    [email protected]
    你还可以启动RTC,