KSG_StringProcess.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  FileName    :   KSG_StringProcess.cpp
  4. //  Version     :   1.0
  5. //  Creater     :   Freeway Chen
  6. //  Date        :   2003-8-1 12:45:11
  7. //  Comment     :   Process String to Int, Skip Symbol
  8. //
  9. //////////////////////////////////////////////////////////////////////////////////////
  10. #include "KWin32.h"
  11. #include <ctype.h>
  12. #include "KSG_StringProcess.h"
  13. int KSG_StringGetInt(const char **ppcszString, int nDefaultValue)
  14. {
  15.     int nResult = false;
  16.     int nRetValue = 0;
  17.     int nNegSignFlag = false;
  18.     int nRetValueValidFlag = false;
  19.     const char *pcszString = NULL;
  20.     if (!ppcszString)
  21.         goto Exit0;
  22.     
  23.     pcszString = *ppcszString;
  24.     if (!pcszString)
  25.         goto Exit0;
  26.     while (isspace(*pcszString))
  27.         pcszString++;
  28.     
  29.     if ((*pcszString) == '')
  30.         goto Exit0;
  31.     if ((*pcszString) == '-')
  32.     {
  33.         nNegSignFlag = true;
  34.         pcszString++;
  35.         // Skip Prev Space
  36.         while (isspace(*pcszString))
  37.             pcszString++;
  38.         if ((*pcszString) == '')
  39.             goto Exit0;
  40.     }
  41.     
  42.     while (isdigit(*pcszString))
  43.     {
  44.         nRetValueValidFlag = true;
  45.         nRetValue = nRetValue * 10 +  ((int)(*pcszString - '0'));
  46.         pcszString++;
  47.     }
  48.     nResult = true;
  49. Exit0:
  50.     if (pcszString)
  51.     {
  52.         if (ppcszString)
  53.             *ppcszString = pcszString;
  54.     }
  55.     if (nNegSignFlag)
  56.         nRetValue = -nRetValue;
  57.     if (
  58.         (!nResult) ||
  59.         (!nRetValueValidFlag)
  60.     )
  61.         nRetValue = nDefaultValue; 
  62.     return nRetValue;
  63. }
  64. bool KSG_StringSkipSymbol(const char **ppcszString, int nSymbol)
  65. {
  66.     bool bResult = false;
  67.     const char *pcszString = NULL;
  68.     if (!ppcszString)
  69.         goto Exit0;
  70.     
  71.     pcszString = *ppcszString;
  72.     if (!pcszString)
  73.         goto Exit0;
  74.     while (isspace(*pcszString))
  75.         pcszString++;
  76.     
  77.     if (((unsigned)(*pcszString)) != (unsigned)nSymbol)
  78.         goto Exit0;
  79.     pcszString++;   // Skip Symbol
  80.     bResult = true;
  81. Exit0:
  82.     if (pcszString)
  83.     {
  84.         if (ppcszString)
  85.             *ppcszString = pcszString;
  86.     }
  87.     return bResult;
  88. }