我在我的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
(编辑控件)
我尝试使用关键字COleVariant
到CString
的教程,但它没有用。
答案 0 :(得分:2)
虽然CString
的构造函数以VARIANT
为输入,但通过OLE将字节数组转换为CString
并没有多大意义。
您的字节数组表示ASCII字符串,因此您需要告诉CString
将字节数组视为char
字符串。 CString
有一个构造函数,它接受char*
和长度作为输入,并会根据需要将char
数据转换为CString
的原生字符类型。
试试这个:
m_StrKirim = CString(reinterpret_cast<char*>(data.GetData()), data.GetSize());