C++常用函数

来源:互联网 发布:淘宝好评返现被投诉了 编辑:程序博客网 时间:2024/06/05 11:12
  1. ///////十六进制转char。。。。  
  2. inthexToChar(string &value, char *buf, int &bufLen)  
  3. {    
  4. //    ACE_DEBUG(( _INFO ACE_TEXT( "value:[%s]\n" ), value.c_str()));  
  5.   
  6.     memset(buf, 0x00, bufLen);      
  7.     if ((unsigned int )bufLen < (value.length()/2))   
  8.     {  
  9.         return -1;  
  10.     }  
  11.   
  12.     if (value.length() == 0)  
  13.     {  
  14.         return -1;  
  15.     }  
  16.     if (value.length() % 2 != 0)  
  17.     {  
  18.         return -1;  
  19.     }  
  20.   
  21.     int bufIndex = 0;  
  22.     for (unsigned int i = 0; i < value.length()/2; i++)  
  23.     {      
  24.         string tmp = value.substr(i*2, 2);    
  25.         ascToHex(tmp.c_str(), &buf[bufIndex], 2);  
  26.         bufIndex++;  
  27.     }  
  28.   
  29.     bufLen = bufIndex;  
  30.       
  31.     //ACE_HEX_DUMP((LM_INFO, (char *)buf, bufLen, "resp message:"));  
  32.       
  33.     return 0;  
  34. }  
  35.   
  36. ////asc转十六进制  
  37. intascToHex(const char *Asc, char *Hex, int AscLen)  
  38. {  
  39.     char *HexPtr = Hex;  
  40.     short i;  
  41.       
  42.     for(i = 0; i < AscLen; i++)  
  43.     {  
  44.         *HexPtr = Asc[i] << 4;  
  45.         if (!(Asc[i]>='0' && Asc[i]<='9'))  
  46.             *HexPtr += 0x90;  
  47.         i++;  
  48.         *HexPtr |= (Asc[i] & 0x0F);  
  49.         if (!(Asc[i]>='0' && Asc[i]<='9'))  
  50.             *HexPtr += 0x09;  
  51.         HexPtr++;  
  52.     }  
  53.       
  54.     return 0;  
  55. }  
  56.   
  57. //十六进制转asc  
  58. inthexToAsc(const char *Hex, int HexLen, char *Asc)  
  59. {  
  60.     int i;  
  61.     char *AscPtr;  
  62.     const char *HexPtr;  
  63.     char Temp;  
  64.   
  65.     HexPtr=Hex;  
  66.     AscPtr=Asc;  
  67.   
  68.     for(i = 0; i < HexLen; i++)  
  69.     {  
  70.         Temp = (*HexPtr & 0xf0) >> 4;  
  71.         if (Temp < 10)  
  72.             *AscPtr = 0x30 + Temp; // 数字0-9  
  73.         else  
  74.             *AscPtr = 0x37 + Temp; // 字母A-F  
  75.               
  76.         AscPtr++;  
  77.           
  78.         Temp = *HexPtr & 0x0f;  
  79.         if (Temp < 10)  
  80.             *AscPtr = 0x30 + Temp;  
  81.         else  
  82.             *AscPtr = 0x37 + Temp;  
  83.               
  84.         AscPtr++;  
  85.         HexPtr++;  
  86.     }  
  87.       
  88.     return 0;  
  89. }  
  90. //删除字符串中的空格。  
  91. voiddelAllBlank(string &line)  
  92. {  
  93.     if (line.length() <= 0)          
  94.     {  
  95.         return;  
  96.     }  
  97.   
  98.     string tmp;  
  99.     tmp.clear();  
  100.     try  
  101.     {  
  102.        for(unsigned int i = 0; i < line.length(); i++)  
  103.         {  
  104.             if (line[i] == ' ' ||  line[i] == '\t'   
  105.              || line[i] == '\n' || line[i] == '\r')  
  106.             {  
  107.                 continue;  
  108.             }  
  109.             else  
  110.             {  
  111.                 tmp += line[i];    
  112.             }  
  113.         }  
  114.         line.clear();  
  115.         line = tmp;  
  116.     }  
  117.     catch(...)  
  118.     {          
  119.         ACE_DEBUG(( _ERROR ACE_TEXT( "  delAllBlank execaption\n" ) ));            
  120.     }  
  121.     return;  
  122. }  
  123.   
  124. ///同上。  
  125. voiddelAllBlank(char *pstr)  
  126. {  
  127.     if (NULL == pstr)  
  128.     {  
  129.         return;  
  130.     }  
  131.   
  132.     int strLen = strlen(pstr);  
  133.   
  134.     string tmpStr;  
  135.     try  
  136.     {  
  137.        for(int i = 0; i < strLen; i++)  
  138.         {  
  139.             if (pstr[i] == ' ' ||  pstr[i] == '\t'   
  140.              || pstr[i] == '\n' || pstr[i] == '\r')  
  141.             {  
  142.                 continue;  
  143.             }  
  144.             else  
  145.             {  
  146.                 tmpStr += pstr[i];    
  147.             }  
  148.         }  
  149.     }  
  150.     catch(...)  
  151.     {          
  152.         ACE_DEBUG(( _ERROR ACE_TEXT( "  delAllBlank execaption\n" ) ));            
  153.     }  
  154.   
  155.     memset(pstr, 0x00, strLen);  
  156.     memcpy(pstr, tmpStr.c_str(), tmpStr.length());  
  157.       
  158.     return;  
  159. }  
  160.   
  161. /////删除最后一个空格  
  162. voiddelLastBlank(char *pstr)  
  163. {  
  164.     if (NULL == pstr)  
  165.     {  
  166.         return;  
  167.     }      
  168.       
  169.     string tmpStr = pstr;  
  170.     memset(pstr, 0x00, strlen(pstr));  
  171.     try  
  172.     {  
  173.         for (;;)  
  174.         {  
  175.             if (tmpStr.length() > 0)  
  176.             {  
  177.                 if (tmpStr[tmpStr.length()-1] == ' ' ||  tmpStr[tmpStr.length()-1] == '\t'   
  178.                  || tmpStr[tmpStr.length()-1] == '\n' || tmpStr[tmpStr.length()-1] == '\r')  
  179.                 {  
  180.                     tmpStr.erase(tmpStr.length()-1);  
  181.                 }  
  182.                 else  
  183.                 {  
  184.                     break;  
  185.                 }  
  186.             }  
  187.             else  
  188.             {  
  189.                 break;  
  190.             }              
  191.         }  
  192.     }      
  193.     catch(...)  
  194.     {          
  195.         ACE_DEBUG(( _ERROR ACE_TEXT( "  delLastBlank execaption\n" ) ));            
  196.     }  
  197.     memcpy(pstr, tmpStr.c_str(), tmpStr.length());  
  198.       
  199.     return;  
  200. }  
  201.   
  202. voiddelLastBlank(string &tmpStr )  
  203. {  
  204.     try  
  205.     {  
  206.         for (;;)  
  207.         {  
  208.             if (tmpStr.length() > 0)  
  209.             {          
  210.                 if (tmpStr[tmpStr.length()-1] == ' ' ||  tmpStr[tmpStr.length()-1] == '\t'   
  211.                  || tmpStr[tmpStr.length()-1] == '\n' || tmpStr[tmpStr.length()-1] == '\r')  
  212.                 {  
  213.                     tmpStr.erase(tmpStr.length()-1);  
  214.                 }  
  215.                 else  
  216.                 {  
  217.                     break;  
  218.                 }  
  219.             }  
  220.             else  
  221.             {  
  222.                 break;  
  223.             }  
  224.         }  
  225.     }      
  226.     catch(...)  
  227.     {          
  228.         ACE_DEBUG(( _ERROR ACE_TEXT( "  delLastBlank execaption\n" ) ));            
  229.     }      
  230.     return;  
  231. }  
  232. ////删除最前边的空格。  
  233. voiddelHeadBlank(string &tmpStr )  
  234. {  
  235.     try  
  236.     {  
  237.         for (;;)  
  238.         {  
  239.             if (tmpStr.length() > 0)  
  240.             {          
  241.                 if (tmpStr[0] == ' ' || tmpStr[0] == '\t'   
  242.                  || tmpStr[0] == '\n' || tmpStr[0] == '\r')  
  243.                 {  
  244.                     tmpStr.erase(0);  
  245.                 }  
  246.                 else  
  247.                 {  
  248.                     break;  
  249.                 }  
  250.             }  
  251.             else  
  252.             {  
  253.                 break;  
  254.             }  
  255.         }  
  256.     }      
  257.     catch(...)  
  258.     {          
  259.         ACE_DEBUG(( _ERROR ACE_TEXT( "  delLastBlank execaption\n" ) ));            
  260.     }      
  261.     return;  
  262. }  
  263. //加载文件。  
  264. intloadFile(string fileName, vector<string> &vecLine)  
  265. {  
  266.     vecLine.clear();  
  267.   
  268.     FILE *m_fp = fopen(fileName.c_str(), "rb");  
  269.     if (NULL == m_fp)  
  270.     {          
  271.         ACE_DEBUG(( _ERROR ACE_TEXT( " getline execpaction:[%s]\n" ), fileName.c_str()));              
  272.         return -1;  
  273.     }  
  274.   
  275.     char fileLine[MAX_FILE_LINE_LEN];  
  276.       
  277.     try  
  278.     {      
  279.         for (;;)  
  280.         {  
  281.             memset(fileLine, 0x00, MAX_FILE_LINE_LEN);  
  282.             if (!feof(m_fp))   
  283.             {                           
  284.                 if (NULL == fgets(fileLine, MAX_FILE_LINE_LEN, m_fp))  
  285.                 {  
  286.                     break;  
  287.                 }  
  288.                 vecLine.push_back(fileLine);                     
  289.             }  
  290.             else  
  291.             {  
  292.                 break;  
  293.             }          
  294.         }  
  295.     }  
  296.     catch(...)  
  297.     {          
  298.         fclose(m_fp);  
  299.         ACE_DEBUG(( _ERROR ACE_TEXT( " getline execpaction:[%s]\n" ), fileName.c_str()));              
  300.         return -1;  
  301.     }  
  302.     fclose(m_fp);  
  303.     return 0;  
  304. }  
  305.   
  306.   
  307. ////写到文件  
  308.   
  309. void writeToFile(string fileName, char *format, ...)  
  310. {  
  311.     va_list ap;  
  312.     char date[10240];  
  313.     char msgformat[10240];  
  314.   
  315.     memset(msgformat, 0x00, 10240);  
  316.     memset(date, 0x00, 10240);  
  317.   
  318.     FILE *logfp = NULL;  
  319.     logfp = fopen(fileName.c_str(), "a+");  
  320.   
  321.     if (NULL == logfp)  
  322.     {  
  323.         printf("open log file fail.\n");  
  324.         return ;  
  325.     }  
  326.   
  327.     if (NULL == format)  
  328.     {  
  329.         printf("NULL == format.\n");  
  330.     }  
  331.   
  332.     strcat(msgformat, format);  
  333.   
  334.     int msglen = strlen(msgformat);  
  335.     if ('\n' != msgformat[msglen - 1])  
  336.     {  
  337.         strcat(msgformat, "\n");  
  338.     }  
  339.   
  340.     va_start(ap, format);  
  341.     vfprintf (logfp, msgformat, ap);  
  342.     va_end(ap);  
  343.   
  344.     fflush(logfp);  
  345.   
  346.     fclose(logfp);  
  347.   
  348.     return;  
  349. }