diff --git a/string_builder.cpp b/string_builder.cpp index c81b7ad..036a4e3 100644 --- a/string_builder.cpp +++ b/string_builder.cpp @@ -33,6 +33,34 @@ void StringBuilder::append(char const c) m_front = new_front; } +void StringBuilder::append_number(int x) +{ + if(x < 0) + { + this->append('-'); + x = -x; + } + + int max_divider = 10; + while(x/max_divider > 10) + max_divider*=10; + + while(max_divider > 0) + { + char c = x/max_divider; + x = x%max_divider; + max_divider /= 10; + + this->append_digit(c); + } +} + +void StringBuilder::append_digit(char x) +{ + x = (x % 10) + '0'; + this->append(x); +} + char* StringBuilder::to_string() const { char* ret = new char[m_size + 1]; diff --git a/string_builder.h b/string_builder.h index cab6c83..b0d9210 100644 --- a/string_builder.h +++ b/string_builder.h @@ -26,6 +26,8 @@ class StringBuilder void append(char const c); inline void operator += (char const c) {this-> append(c);} + void append_number(int x); + /** * @brief get the string * @@ -51,6 +53,8 @@ class StringBuilder char m_c; }; + void append_digit(char x); + protected: unsigned int m_size; Node * m_front;