|
3 | 3 | namespace { |
4 | 4 | auto parse(const std::string &s) { |
5 | 5 | auto it = std::find(s.begin(), s.end(), ','); |
6 | | - std::string_view sec1{s.begin(), it}; |
7 | | - std::string_view sec2{std::next(it, 1), s.end()}; |
8 | | - std::tuple<long, long, long, long> out{}; |
9 | | - { |
10 | | - size_t hy = sec1.find('-'); |
11 | | - std::from_chars(sec1.data(), sec1.data() + hy, std::get<0>(out)); |
12 | | - std::from_chars(sec1.data() + hy + 1, sec1.data() + sec1.size(), |
13 | | - std::get<1>(out)); |
14 | | - } |
15 | | - { |
16 | | - size_t hy = sec2.find('-'); |
17 | | - std::from_chars(sec2.data(), sec2.data() + hy, std::get<2>(out)); |
18 | | - std::from_chars(sec2.data() + hy + 1, sec2.data() + sec2.size(), |
19 | | - std::get<3>(out)); |
| 6 | + std::array<std::string_view, 2> sec; |
| 7 | + sec[0] = std::string_view{s.begin(), it}; |
| 8 | + sec[1] = std::string_view{std::next(it, 1), s.end()}; |
| 9 | + |
| 10 | + std::array<long, 4> out{}; |
| 11 | + for (size_t i = 0; const auto &sv : sec) { |
| 12 | + size_t hy = sv.find('-'); |
| 13 | + std::from_chars(sv.data(), sv.data() + hy, out[i]); |
| 14 | + std::from_chars(sv.data() + hy + 1, sv.data() + sv.size(), out[i + 1]); |
| 15 | + i += 2; |
20 | 16 | } |
21 | 17 | return out; |
22 | 18 | } |
|
0 commit comments