当前位置:C++技术网 > 资讯 > CString 与 Byte 之间的 一点小问题

CString 与 Byte 之间的 一点小问题

更新时间:2015-09-15 18:19:28浏览次数:1+次

    今天编程的时候发现用=将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;