//-------------------------------&与->的优先级------------------------------------//
*与++的优先级
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-------------------//