|
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