blob: 480c31f81fc918fe7ee053d1598d162292c20013 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include "utils.hpp"
#include <climits>
#include <stdexcept>
unsigned int str_to_uint(std::string str)
{
if (str.at(0) == '-')
throw "Less than 0";
std::size_t waste_pos;
unsigned long num;
try
{
num = std::stoul(str, &waste_pos, 10);
}
catch (const std::invalid_argument &exc)
{
throw "Not a number";
}
catch (const std::out_of_range &exc)
{
throw "Out of range";
}
if (waste_pos != str.length())
throw "Not a number";
if (num > UINT_MAX)
throw "Out of range";
return static_cast<unsigned int>(num);
}
|