Porytiles
Loading...
Searching...
No Matches
parse_int.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <expected>
4#include <string>
5
6namespace porytiles2 {
7
8// ReSharper disable once CppParameterMayBeConst
9template <typename T>
10std::expected<T, std::string> parse_int(std::string_view int_string, const int base)
11{
12 T arg;
13 std::size_t pos;
14
15 try {
16 arg = std::stoi(int_string.data(), &pos, base);
17 }
18 catch (const std::exception &) {
19 return std::unexpected{"invalid integral string: " + std::string{int_string}};
20 }
21
22 if (std::string{int_string}.size() != pos) {
23 return std::unexpected{"invalid integral string: " + std::string{int_string}};
24 }
25
26 return arg;
27}
28
29// ReSharper disable once CppParameterMayBeConst
30template <typename T>
31std::expected<T, std::string> parse_int(std::string_view int_string)
32{
33 return parse_int<T>(int_string, 0);
34}
35
36} // namespace porytiles2
std::expected< T, std::string > parse_int(std::string_view int_string, const int base)
Definition parse_int.hpp:10