123456789101112131415161718192021222324252627282930313233343536373839 |
- #ifndef STRING_H
- #define STRING_H
- class String final {
- public:
- String();
- String(const char* str);
- bool operator==(const String& other) const;
- bool operator!=(const String& other) const;
- operator const char*() const;
- char operator[](int index) const;
- int getLength() const;
- template<typename T>
- String& append(const char* format, const T& t) {
- int left = MAX_LENGTH - length;
- int written = snprintf(data + length, left, format, t);
- if(written < left) {
- length += written;
- } else {
- length = MAX_LENGTH;
- }
- return *this;
- }
- String& append(char c);
- String& append(const char* str);
- String& append(int i);
- String& append(float f);
- String& append(bool b);
- private:
- static constexpr int MAX_LENGTH = 256 - sizeof(int);
- char data[MAX_LENGTH];
- int length;
- };
- #endif
|