临时笔记一

文章讨论了C++中*与++的优先级问题,指出++的优先级高于*,并展示了如何使用map时避免插入重复键。同时,提到了字符串处理函数如strcmp,以及将char转换为WCHAR的方法,并给出了Json::Reader的相关链接。
摘要由CSDN通过智能技术生成

//-------------------------------&与->的优先级------------------------------------//

*与++的优先级

int testArr[5] = {1,2,3,4,5};

int* cursor = &testArr[1];

printf("cursor1 = %x\n",cursor);

printf("*cursor++ = %d\n",(*cursor++));

printf("cursor2 = %x\n",cursor);
打印结果:

cursor1=dfbff394
*cursor++ = 2
cursor2 = efbff398

++优先级高于 * ,cursor先与++结合,但++是在操作数的后面,所以其意义就是执行完这句话后再执行++

//-------------------------------&与->的优先级------------------------------------//

//-------------------------------map不能插入first重复值------------------------------------//

map<int,char> mapTestInfo;   // 500ms 定时器到达标志 
        //mapTestInfo.insert(std::make_pair(1,'a'));
        mapTestInfo.insert(std::make_pair(2,'b'));
        mapTestInfo.insert(std::make_pair(2,'c'));//已经有2了这个'c'加不进去了
        int n0 = mapTestInfo.size();//n0=1
        map<int,char>::iterator p = mapTestInfo.find(2);
        n0 = p->first;//n0=2
        char cT = p->second;//cT='b'

//-------------------------------map不能插入first重复值------------------------------------//

//-------------------------------------------------------------------//

std::string FormData(CString strData)
{
    USES_CONVERSION;
    string  sData("");
    sData = T2A(strData);

    BYTE bSTX = 0x02 ;
    BYTE bSOH = 0x01 ;
    BYTE bETX = 0x03 ;
    CString strDataLen;
    strDataLen.Format(L"%d",sData.length());

    //strSendData.push_back(bSTX);
    //string sDataLen = T2A(strDataLen);
    //strSendData.append(sDataLen);
    string  strSendData("");
    strSendData.append(1,bSTX);
    strSendData += T2A(strDataLen);
    strSendData.append(1,bSOH);
    strSendData += sData;
    strSendData.append(1,bETX);

    int n = strSendData.length();
    int n2 = 0;
    return strSendData;
}

bool CheckRevData(char * revBuff,int nRevLen,char * chBusinessData,int *nBusinessDataLen)
{
    //应答报文是一个json格式的字符串,具体结构如下:
    //    STX数据长度SOH
    //{
    //    "ResponseHead":{
    //        "Status":"S",
    //            "ErrorDetail":"",
    //            "WarningDetail":"",
    //            "RequestID":""
    //    },
    //    "ResponseData":{
    //        "DataList":[
    //        {}            
    //        ]
    //        }
    //}ETX

    bool bRet(true);
    // 数据格式:[STX]{数据长度}[SOH]{业务数据}[ETX]
    const BYTE bSTX = 0x02 ;
    const BYTE bSOH = 0x01 ;
    const BYTE bETX = 0x03 ;
  

    string strBusDataLen("");
    int nSOHIndex(0);
    if(bSTX == revBuff[0] && bETX == revBuff[nRevLen-1])// 0x02开头,0x03结尾
    {
        for(int i=1;i<nRevLen;i++)
        {
            if(bSOH == revBuff[i])
            {
                nSOHIndex = i;// 0x01出现的位置
                break;
            }
        }
    }
    
    if(nSOHIndex < 1 || nSOHIndex >= nRevLen-1)// 如果0x01不是在第1个和倒数第2个之间则返回异常对不上协议
    {
        bRet = false;
    }
    else
    {
        strBusDataLen.append(revBuff+1,nSOHIndex);// 获取字符数组中[STX]和[SOH]之间的字符,也就是业务数据长度值
        int nBusDataLen = atoi(strBusDataLen.c_str());
        if(nRevLen != 1 + nSOHIndex + 1 + nBusDataLen +1) // 正常返回时 总长度== 1(1个字节的STX) + 数据长度值所占的字节数 +1(1个字节的SOH) + 业务数据的长度 + 1(1个字节的ETX)
        {
            bRet = false;
        }
        else
        {
            *nBusinessDataLen = nBusDataLen;
            memcpy(chBusinessData,revBuff+nSOHIndex+1,nBusDataLen) ; 
            bRet = true;
        }
    }
    return bRet;
}

//-------------------------------------------------------------------//

//-------------------------------Json::Reader------------------------------------//

https://www.cnblogs.com/ssyfj/p/14011014.html

//-------------------------------Json::Reader------------------------------------//

//-------------------------------字符串操作------------------------------------//

strcmp(_In_z_ const char * _Str1, _In_z_ const char * _Str2)

//-------------------------------字符串操作------------------------------------//

//------------------简单的char转wcha_t-------------------//
 char *name = "qiang.zhou";
 WCHAR wname[256];
 for(int i = 0; i < strlen(name); i++)
 {
    wname[i] = name[i];
 }

//------------------简单的char转wcha_t-------------------//

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值