Advertisement
3axap_010

String.h

Sep 20th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <iostream>
  4. #include <stdexcept>
  5.  
  6. class String
  7. {
  8. public:
  9.  
  10.     friend const String operator+(const String&, const String&);
  11.     friend const String operator+(const String&, const char*);
  12.     friend std::ostream& operator<<(std::ostream&, const String&);
  13.  
  14.     String(size_t size = 0);
  15.     String(unsigned int, unsigned int);
  16.     String(const String&);
  17.     String(const char*);
  18.     String(String&&) noexcept;
  19.  
  20.     ~String() { dealloc(); }
  21.  
  22.     String& operator=(const String&);
  23.     String& operator=(String&& rv) noexcept;
  24.     String& operator=(const char*);
  25.     String& operator+=(const String&);
  26.     String& operator+=(const char*);
  27.     char& operator[](const size_t) const;
  28.     bool operator<(const String&) const;
  29.     bool operator>(const String&) const;
  30.     bool operator==(const String&) const;
  31.     bool operator<(const char*) const;
  32.     bool operator>(const char*) const;
  33.     bool operator==(const char*) const;
  34.     String& operator++();
  35.     String& operator--();
  36.  
  37.     bool isEmpty() const { return data == nullptr; }
  38.     size_t size_() const { return this->size; }
  39.  
  40. private:
  41.  
  42.     size_t get_size(const char*) const;
  43.     void alloc(const size_t);
  44.     void dealloc();
  45.     void copy(const char*);
  46.     void copy(const String&);
  47.  
  48.     char* data;
  49.     size_t size;
  50. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement