ritsuko
Helper utilities for ArtifactDB C++ code
Loading...
Searching...
No Matches
itoa.hpp
Go to the documentation of this file.
1#ifndef RITSUKO_ITOA_HPP
2#define RITSUKO_ITOA_HPP
3
4#include <string>
5#include <algorithm>
6#include <type_traits>
7
13namespace ritsuko {
14
25template<typename Integer_>
26void itoa(Integer_ x, std::string& output) {
27 static_assert(std::is_integral<Integer_>::value);
28 if (x > 0) {
29 const auto sofar = output.size();
30 while (x) {
31 output += static_cast<char>('0' + x % 10);
32 x /= 10;
33 }
34 std::reverse(output.begin() + sofar, output.end());
35 } else if (x == 0) {
36 output += '0';
37 } else {
38 output += '-';
39 const auto sofar = output.size();
40 while (x) {
41 output += static_cast<char>('0' - (x % 10));
42 x /= 10;
43 }
44 std::reverse(output.begin() + sofar, output.end());
45 }
46}
47
57template<typename Integer_>
58std::string itoa(Integer_ x) {
59 std::string output;
60 itoa(x, output);
61 return output;
62}
63
64}
65
66#endif
Helper functions for ArtifactDB parsing and validation.
Definition Pointer.hpp:22
void itoa(Integer_ x, std::string &output)
Definition itoa.hpp:26