|
|
|
@ -78,29 +78,17 @@ static std::string itox(T i) {
|
|
|
|
|
return ss.str();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static bool try_stoi(int& val, const std::string& str, std::size_t* pos = 0, int base = 10)
|
|
|
|
|
static bool try_stoi(int& val, const std::string& str)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
val = std::stoi(str, pos, base);
|
|
|
|
|
if (sscanf(str.c_str(), "%d", &val) == 1)
|
|
|
|
|
return true;
|
|
|
|
|
} catch (std::invalid_argument& e) {
|
|
|
|
|
#ifndef NDEBUG
|
|
|
|
|
std::cerr << __func__ << ": invalid argument: '" << str << "'" << std::endl;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static bool try_stoull(unsigned long long& val, const std::string& str, std::size_t* pos = 0, int base = 10)
|
|
|
|
|
static bool try_stoull(unsigned long long& val, const std::string& str)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
val = std::stoull(str, pos, base);
|
|
|
|
|
if (sscanf(str.c_str(), "%llu", &val) == 1)
|
|
|
|
|
return true;
|
|
|
|
|
} catch (std::invalid_argument& e) {
|
|
|
|
|
#ifndef NDEBUG
|
|
|
|
|
std::cerr << __func__ << ": invalid argument: '" << str << "'" << std::endl;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|