今天编程的时候发现用=将byte赋值给CString会出错,使用+=赋值不会出错,于是写了一段小代码测试一下。
#include <iostream>
#include <afx.h>
using namespace std;
int main()
{
CString i;
byte b = 'a';
// i += b;//没有错误
i = b;//出错
system("pause");
return 0;
}
错误是编译器发现=赋值表达不明确,不知道b是char还是wchar(宽字节),所以想让=赋值表达明确需要这样:
i = (char)b;
+=赋值没有这个问题(这个我也不清楚,我猜想是因为+=重载函数有unsigned char这个类型吧)
下面转自 http://zhidao.baidu.com/link?url=VuyPDuLoak9zeKFVfmGwMhTRYdCIChSO5U9bneqRafhFllGXJ2m-kwK8HjuFwYNieqUsXpY4wUyvMNvEhOARIa
CString与Byte数组的相互转化 :
byte
CString cs1 = "gettruckpos";
byte buf[200];
memcpy(buf,cs1.GetBuffer(cs1.GetLength()),cs1.GetLength()); //将cstring放入byte数组
CString *pPhoneNum =new CString((char*)buf, cs1.GetLength()); //将byte数组转换成cstring
CString cs2 = *pPhoneNum;