分享

发几个c++常用小工具的函数

 albert_wei 2013-10-31
  1. //取当前日期   
  2. string getCurDate()  
  3. {  
  4.     time_t nowtime;  
  5.     time(&nowtime);    //取当前时间值   
  6.     struct tm *tPtr;      
  7.     tPtr = localtime(&nowtime);  
  8.   
  9.     char dateStamp[32];  
  10.     ACE_OS::sprintf(dateStamp, "%04d%02d%02d", tPtr->tm_year+1900 ,tPtr->tm_mon+1,tPtr->tm_mday);  
  11.           
  12.     return dateStamp;  
  13. }  
  14. //取得当前时间   
  15. string getCurTime()  
  16. {  
  17.     time_t nowtime;  
  18.     time(&nowtime);     
  19.     struct tm *tPtr;      
  20.     tPtr = localtime(&nowtime);   
  21.   
  22.     char timeStamp[15];  
  23.     memset(timeStamp, 0x00, 15);  
  24.     ACE_OS::sprintf(timeStamp, "%02d%02d%02d", tPtr->tm_hour,tPtr->tm_min,tPtr->tm_sec);  
  25.           
  26.     return timeStamp;  
  27. }  
  28. //int型转string 型   
  29. string intToString(int value)  
  30. {  
  31.     char tmpString[15];  
  32.     memset(tmpString, 0x00, 15);  
  33.     sprintf(tmpString, "%d", value);  
  34.     return  tmpString;  
  35. }  
  36. //将字符串处理为小写。   
  37. void toLower(string &strTmp)  
  38. {  
  39.     for (unsigned int i = 0; i < strTmp.length(); i++)  
  40.     {  
  41.         strTmp[i] = tolower(strTmp[i]);  
  42.     }  
  43.     return;  
  44. }  
  45. ///根据分隔标记flag将字符串放入。。。。   
  46. int getItem(string &msg ,  char flag, vector<string> &line)  
  47. {  
  48.     try  
  49.     {  
  50.         if (line.size() != 0)  
  51.         {  
  52.             line.clear();  
  53.         }  
  54.           
  55.         if (msg.length() == 0)  
  56.         {  
  57.             return 0;  
  58.         }  
  59.   
  60.         char *tmpMsg = &msg[0];  
  61.   
  62.         int begin = 0;  
  63.         int end = 0;  
  64.         string tmp;  
  65.         for (unsigned int i = 0; i < msg.length(); i ++)  
  66.         {  
  67.             if (tmpMsg[i] == flag)  
  68.             {  
  69.                 end = i;  
  70.             }  
  71.             else  
  72.             {  
  73.                 continue;  
  74.             }   
  75.   
  76.             if ((end-begin)> 0)  
  77.             {               
  78.                  tmp = string(&tmpMsg[begin], end-begin);  
  79.             }  
  80.             else  
  81.             {  
  82.                 tmp = "";  
  83.             }  
  84.             begin = end+1;                 
  85.             line.push_back(tmp);  
  86.            
  87.         }  
  88.         if ((msg.length()-begin)> 0)  
  89.         {               
  90.             tmp  = string(&tmpMsg[begin], msg.length()-begin);  
  91.             line.push_back(tmp);  
  92.         }       
  93.   
  94.     }  
  95.     catch(...)  
  96.     {  
  97.         ACE_DEBUG(( _INFO ACE_TEXT("  getItem execpaction:[%s].\n"), msg.c_str()));  
  98.         return -1;  
  99.     }  
  100.     return 0;  
  101. }  
  102. ////输出vector的内容。   
  103. void dispVector(const vector<string> &vecTmp)  
  104. {  
  105.     if (vecTmp.size() == 0)  
  106.     {  
  107.         ACE_DEBUG(( _INFO ACE_TEXT( " vector is null\n" )));  
  108.         return;          
  109.     }  
  110.       
  111.     for (unsigned int i = 0 ; i < vecTmp.size(); i++)  
  112.     {  
  113.         ACE_DEBUG(( _INFO ACE_TEXT( "  [%25s]\n" ), vecTmp[i].c_str()));          
  114.     }  
  115.   
  116.     return ;  
  117. }  
  118. ////返回num后的字符串   
  119. string lastStr(string &from, int num)  
  120. {  
  121.     if (from.length() <= (unsigned int)num)  
  122.     {  
  123.         return from;  
  124.     }  
  125.     else  
  126.     {  
  127.         return from.substr(from.length()-num, num);  
  128.     }  
  129. }  
  130.   
  131. string leftFullChar(string &from, int count, char flag)  
  132. {  
  133.     if (from.length() > (unsigned int)count)  
  134.     {  
  135.         return from ;  
  136.     }  
  137.   
  138.     int fullCount  = (int)from.length() - count;  
  139.     string strTmp(fullCount, flag);  
  140.     strTmp += from;  
  141.     return strTmp;  
  142. }  
  143.   
  144. string rightFullChar(string &from, int count, char flag)  
  145. {  
  146.     if (from.length() > (unsigned int)count)  
  147.     {  
  148.         return from ;  
  149.     }  
  150.   
  151.     int fullCount  = (int)from.length() - count;  
  152.     string strTmp(fullCount, flag);  
  153.     return from+strTmp;  
  154. }  
  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. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多