如何将COleVariant转换为CString c ++

时间:2018-04-06 02:29:05

标签: c++ mfc

我在我的MFC中有这个:

CByteArray data;  data.SetSize(9);
data[0]='*';
data[1]=xG;
data[2]=',';
data[3]=yG;
data[4]=',';
data[5]=xL;
data[6]=',';
data[7]=yL;
data[8]='#';

if(m_comm.get_PortOpen()){ //mscomm serial
    UpdateData(TRUE);
    m_comm.put_Output(COleVariant(data));

    m_StrKirim=COleVariant(data);

    UpdateData(FALSE);
}

结果m_StrKirim就像汉字idk。

目标是我想将数据(数组)转换为一个字符串并将其复制到CString变量并将其显示为m_StrKirim(编辑控件)

我尝试使用关键字COleVariantCString的教程,但它没有用。

1 个答案:

答案 0 :(得分:2)

虽然CString的构造函数以VARIANT为输入,但通过OLE将字节数组转换为CString并没有多大意义。

您的字节数组表示ASCII字符串,因此您需要告诉CString将字节数组视为char字符串。 CString有一个构造函数,它接受char*和长度作为输入,并会根据需要将char数据转换为CString的原生字符类型。

试试这个:

m_StrKirim = CString(reinterpret_cast<char*>(data.GetData()), data.GetSize());