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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    template<class T, class U> bool convertStrToInt(const char* str, int base, T &res, T def, U (*strto)(const char *, char **, int ))
    {
        char *endptr = NULL;
        errno = 0;//man wants it
        if ( ! str || *str == '\0' )
        {
            res = def;
            return false;
        }
        U result =  strto(str, &endptr, base);
        if (errno == ERANGE || (*endptr != '\0') || ! *str) {
            std::stringstream errorStr;
            errorStr << "convertStrToInt failed ; string = '" << str << "' result ='" << result << "' endptr = '" << endptr << "' errno = '" << errno << "'";
            res = def;
            log_error("%s", errorStr.str().c_str());
            return false;
        }
        res = static_cast<T>(result);
        return true;
    }

    Преобразование строки в число

    Запостил: patzantre, 26 Декабря 2018

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

    • хуйня какая-то дикая.
      Ответить
    • Чего хочет мужчина? errno = 0;

      Короче, вспомогательная функция, которая логирует ошибки формата.
      Ответить
    • Совсем некрестово. Почему str с жестко заданным типом? Почему вместо божественного std::function<U(TT, TTT, int)> какая-то сишная питушня? Где SFINAE, в конце-концов?!
      Ответить

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