using std::ostringstream;
- long long strict_strtoll(const std::string_view str, int base, std::string *err)
+ long long strict_strtoll(std::string_view str, int base, std::string *err)
{
- ostringstream errStr;
- if (auto invalid = str.find_first_not_of("0123456789-+");
- invalid != std::string_view::npos ||
- invalid == 0) {
- errStr << "The option value '" << str << "' contains invalid digits";
- *err = errStr.str();
- return 0;
- }
char *endptr;
errno = 0; /* To distinguish success/failure after call (see man page) */
long long ret = strtoll(str.data(), &endptr, base);
return strict_strtoll(std::string_view(str), base, err);
}
- int strict_strtol(const std::string_view str, int base, std::string *err)
+ int strict_strtol(std::string_view str, int base, std::string *err)
{
- ostringstream errStr;
long long ret = strict_strtoll(str, base, err);
if (!err->empty())
return 0;
return strict_strtol(std::string_view(str), base, err);
}
- double strict_strtod(const std::string_view str, std::string *err)
+ double strict_strtod(std::string_view str, std::string *err)
{
char *endptr;
- ostringstream oss;
errno = 0; /* To distinguish success/failure after call (see man page) */
double ret = strtod(str.data(), &endptr);
if (errno == ERANGE) {
return strict_strtod(std::string_view(str), err);
}
- float strict_strtof(const std::string_view str, std::string *err)
+ float strict_strtof(std::string_view str, std::string *err)
{
char *endptr;
- ostringstream oss;
errno = 0; /* To distinguish success/failure after call (see man page) */
float ret = strtof(str.data(), &endptr);
if (errno == ERANGE) {