1. C++ / Говнокод #1547

    +13

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    __inline BOOL IsNumeric(LPTSTR lpsBuf)
    {
     int i, nSize = _tcslen(lpsBuf);
     for (i = 0; i < nSize; i++)
      if ((lpsBuf[i] < _T('0')) || (lpsBuf[i] > _T('9')))
       return (FALSE);
     return (TRUE);
    }

    Серъёзный алгоритм.

    Запостил: Exhumer, 12 Августа 2009

    Комментарии (5) RSS

    • Да, вместо предварительного вычисления длины строки надо было просто проходить по ней, пока не встретится '\0'. Глупая ошибка.

      for (; *lpsbuf >= _T('0') && *lpsbuf <= _T('9'); ++lpsbuf) ;
      return *lpsbuf == 0;

      Как-то так.
      Ответить
    • еще тот велосипед))
      надо пользоваться boost::lexical_cast :)
      Ответить
    • Не знаю точно, что имел ввиду автор, но, если он хотел проверить, не является ли строка представлением числа, то он забыл проверить в начале знак минуса :)
      Ответить
    • Не кошерный алгоритм...
      Ответить

    Добавить комментарий