转自:http://blog.youkuaiyun.com/wallwind/article/details/6737001
- 又写了一些函数,希望大家给指点一下。。。。小弟不胜感激。。。因为我是在利用ACE 在Linux下编写程序,看到ACE_DEBUG(( _ERROR ACE_TEXT( " delAllBlank execaption\n" ) )); 等是为了调试程序的方便写的。用的时候可以丢掉的。
- /*** wallwind 2011/8/31***/
- ///十六进制转char。。。。
- inthexToChar(string &value, char *buf, int &bufLen)
- {
- // ACE_DEBUG(( _INFO ACE_TEXT( "value:[%s]\n" ), value.c_str()));
- memset(buf, 0x00, bufLen);
- if ((unsigned int )bufLen < (value.length()/2))
- {
- return -1;
- }
- if (value.length() == 0)
- {
- return -1;
- }
- if (value.length() % 2 != 0)
- {
- return -1;
- }
- int bufIndex = 0;
- for (unsigned int i = 0; i < value.length()/2; i++)
- {
- string tmp = value.substr(i*2, 2);
- ascToHex(tmp.c_str(), &buf[bufIndex], 2);
- bufIndex++;
- }
- bufLen = bufIndex;
- //ACE_HEX_DUMP((LM_INFO, (char *)buf, bufLen, "resp message:"));
- return 0;
- }
- asc转十六进制
- intascToHex(const char *Asc, char *Hex, int AscLen)
- {
- char *HexPtr = Hex;
- short i;
- for(i = 0; i < AscLen; i++)
- {
- *HexPtr = Asc[i] << 4;
- if (!(Asc[i]>='0' && Asc[i]<='9'))
- *HexPtr += 0x90;
- i++;
- *HexPtr |= (Asc[i] & 0x0F);
- if (!(Asc[i]>='0' && Asc[i]<='9'))
- *HexPtr += 0x09;
- HexPtr++;
- }
- return 0;
- }
- //十六进制转asc
- inthexToAsc(const char *Hex, int HexLen, char *Asc)
- {
- int i;
- char *AscPtr;
- const char *HexPtr;
- char Temp;
- HexPtr=Hex;
- AscPtr=Asc;
- for(i = 0; i < HexLen; i++)
- {
- Temp = (*HexPtr & 0xf0) >> 4;
- if (Temp < 10)
- *AscPtr = 0x30 + Temp; // 数字0-9
- else
- *AscPtr = 0x37 + Temp; // 字母A-F
- AscPtr++;
- Temp = *HexPtr & 0x0f;
- if (Temp < 10)
- *AscPtr = 0x30 + Temp;
- else
- *AscPtr = 0x37 + Temp;
- AscPtr++;
- HexPtr++;
- }
- return 0;
- }
- //删除字符串中的空格。
- voiddelAllBlank(string &line)
- {
- if (line.length() <= 0)
- {
- return;
- }
- string tmp;
- tmp.clear();
- try
- {
- for(unsigned int i = 0; i < line.length(); i++)
- {
- if (line[i] == ' ' || line[i] == '\t'
- || line[i] == '\n' || line[i] == '\r')
- {
- continue;
- }
- else
- {
- tmp += line[i];
- }
- }
- line.clear();
- line = tmp;
- }
- catch(...)
- {
- ACE_DEBUG(( _ERROR ACE_TEXT( " delAllBlank execaption\n" ) ));
- }
- return;
- }
- ///同上。
- voiddelAllBlank(char *pstr)
- {
- if (NULL == pstr)
- {
- return;
- }
- int strLen = strlen(pstr);
- string tmpStr;
- try
- {
- for(int i = 0; i < strLen; i++)
- {
- if (pstr[i] == ' ' || pstr[i] == '\t'
- || pstr[i] == '\n' || pstr[i] == '\r')
- {
- continue;
- }
- else
- {
- tmpStr += pstr[i];
- }
- }
- }
- catch(...)
- {
- ACE_DEBUG(( _ERROR ACE_TEXT( " delAllBlank execaption\n" ) ));
- }
- memset(pstr, 0x00, strLen);
- memcpy(pstr, tmpStr.c_str(), tmpStr.length());
- return;
- }
- /删除最后一个空格
- voiddelLastBlank(char *pstr)
- {
- if (NULL == pstr)
- {
- return;
- }
- string tmpStr = pstr;
- memset(pstr, 0x00, strlen(pstr));
- try
- {
- for (;;)
- {
- if (tmpStr.length() > 0)
- {
- if (tmpStr[tmpStr.length()-1] == ' ' || tmpStr[tmpStr.length()-1] == '\t'
- || tmpStr[tmpStr.length()-1] == '\n' || tmpStr[tmpStr.length()-1] == '\r')
- {
- tmpStr.erase(tmpStr.length()-1);
- }
- else
- {
- break;
- }
- }
- else
- {
- break;
- }
- }
- }
- catch(...)
- {
- ACE_DEBUG(( _ERROR ACE_TEXT( " delLastBlank execaption\n" ) ));
- }
- memcpy(pstr, tmpStr.c_str(), tmpStr.length());
- return;
- }
- voiddelLastBlank(string &tmpStr )
- {
- try
- {
- for (;;)
- {
- if (tmpStr.length() > 0)
- {
- if (tmpStr[tmpStr.length()-1] == ' ' || tmpStr[tmpStr.length()-1] == '\t'
- || tmpStr[tmpStr.length()-1] == '\n' || tmpStr[tmpStr.length()-1] == '\r')
- {
- tmpStr.erase(tmpStr.length()-1);
- }
- else
- {
- break;
- }
- }
- else
- {
- break;
- }
- }
- }
- catch(...)
- {
- ACE_DEBUG(( _ERROR ACE_TEXT( " delLastBlank execaption\n" ) ));
- }
- return;
- }
- 删除最前边的空格。
- voiddelHeadBlank(string &tmpStr )
- {
- try
- {
- for (;;)
- {
- if (tmpStr.length() > 0)
- {
- if (tmpStr[0] == ' ' || tmpStr[0] == '\t'
- || tmpStr[0] == '\n' || tmpStr[0] == '\r')
- {
- tmpStr.erase(0);
- }
- else
- {
- break;
- }
- }
- else
- {
- break;
- }
- }
- }
- catch(...)
- {
- ACE_DEBUG(( _ERROR ACE_TEXT( " delLastBlank execaption\n" ) ));
- }
- return;
- }
- //加载文件。
- intloadFile(string fileName, vector<string> &vecLine)
- {
- vecLine.clear();
- FILE *m_fp = fopen(fileName.c_str(), "rb");
- if (NULL == m_fp)
- {
- ACE_DEBUG(( _ERROR ACE_TEXT( " getline execpaction:[%s]\n" ), fileName.c_str()));
- return -1;
- }
- char fileLine[MAX_FILE_LINE_LEN];
- try
- {
- for (;;)
- {
- memset(fileLine, 0x00, MAX_FILE_LINE_LEN);
- if (!feof(m_fp))
- {
- if (NULL == fgets(fileLine, MAX_FILE_LINE_LEN, m_fp))
- {
- break;
- }
- vecLine.push_back(fileLine);
- }
- else
- {
- break;
- }
- }
- }
- catch(...)
- {
- fclose(m_fp);
- ACE_DEBUG(( _ERROR ACE_TEXT( " getline execpaction:[%s]\n" ), fileName.c_str()));
- return -1;
- }
- fclose(m_fp);
- return 0;
- }
- 写到文件
- void writeToFile(string fileName, char *format, ...)
- {
- va_list ap;
- char date[10240];
- char msgformat[10240];
- memset(msgformat, 0x00, 10240);
- memset(date, 0x00, 10240);
- FILE *logfp = NULL;
- logfp = fopen(fileName.c_str(), "a+");
- if (NULL == logfp)
- {
- printf("open log file fail.\n");
- return ;
- }
- if (NULL == format)
- {
- printf("NULL == format.\n");
- }
- strcat(msgformat, format);
- int msglen = strlen(msgformat);
- if ('\n' != msgformat[msglen - 1])
- {
- strcat(msgformat, "\n");
- }
- va_start(ap, format);
- vfprintf (logfp, msgformat, ap);
- va_end(ap);
- fflush(logfp);
- fclose(logfp);
- return;
- }