Advertisement
dusanrs

DinString.cpp

Dec 16th, 2021
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. #include "dinstring.hpp"
  2.  
  3. DinString::DinString() {
  4.     duzina = 0;
  5.     text = NULL;
  6. }
  7.  
  8. DinString::DinString(const char ulaz[]) {
  9.     duzina = 0;
  10.     while(ulaz[duzina] != '\0')
  11.         duzina++;
  12.  
  13.     text = new char[duzina + 1];
  14.     for(int i = 0; i < duzina; i++)
  15.         text[i] = ulaz[i];
  16.  
  17.     text[duzina] = '\0';
  18. }
  19.  
  20. DinString::DinString(const DinString& ds) {
  21.     duzina = ds.duzina;
  22.  
  23.     text = new char[duzina + 1];
  24.     for(int i = 0; i < duzina; i++)
  25.         text[i] = ds.text[i];
  26.  
  27.     text[duzina] = '\0';
  28. }
  29.  
  30. DinString::~DinString() {
  31.     delete[] text;
  32. }
  33.  
  34. int DinString::length() const {
  35.     return duzina;
  36. }
  37.  
  38. char& DinString::operator[] (int i) {
  39.     return text[i];
  40. }
  41.  
  42. char DinString::operator[] (int i) const {
  43.     return text[i];
  44. }
  45.  
  46. DinString& DinString::operator=(const DinString& ds) {
  47.     if(this != &ds) {
  48.         delete[] text;
  49.         duzina = ds.duzina;
  50.         text = new char[duzina + 1];
  51.         for (int i = 0; i < duzina; i++)
  52.             text[i] = ds.text[i];
  53.  
  54.         text[duzina] = '\0';
  55.     }
  56.  
  57.     return *this;
  58. }
  59.  
  60. DinString& DinString::operator+=(const DinString& ds) {
  61.     int i;
  62.     char *tempText = new char[duzina + ds.duzina + 1];
  63.     for (i = 0; i < duzina; i++)
  64.         tempText[i] = text[i];
  65.     for (i = 0; i < ds.duzina; i++)
  66.         tempText[duzina + i] = ds.text[i];
  67.     tempText[duzina + ds.duzina] = '\0';
  68.  
  69.     duzina += ds.duzina;
  70.  
  71.     delete[] text;
  72.     text = tempText;
  73.  
  74.     return *this;
  75. }
  76.  
  77. bool operator==(const DinString& ds1, const DinString& ds2){
  78.     if(ds1.duzina != ds2.duzina)
  79.         return false;
  80.  
  81.     for(int i = 0; i < ds1.duzina; i++)
  82.         if(ds1.text[i] != ds2.text[i])
  83.             return false;
  84.  
  85.     return true;
  86. }
  87.  
  88. bool operator!=(const DinString& ds1, const DinString& ds2){
  89.     if(ds1.duzina != ds2.duzina)
  90.         return true;
  91.  
  92.     for(int i = 0; i < ds1.duzina; i++)
  93.         if(ds1.text[i] != ds2.text[i])
  94.             return true;
  95.  
  96.     return false;
  97. }
  98.  
  99. DinString operator+(const DinString& ds1, const DinString& ds2){
  100.     DinString temp;
  101.     temp.duzina = ds1.duzina + ds2.duzina;
  102.  
  103.     temp.text = new char[temp.duzina + 1];
  104.  
  105.     int i;
  106.     for(i = 0; i < ds1.duzina; i++)
  107.         temp.text[i] = ds1.text[i];
  108.  
  109.     for(i = 0; i < ds2.duzina; i++)
  110.         temp.text[ds1.duzina + i] = ds2.text[i];
  111.     temp.text[temp.duzina] = '\0';
  112.  
  113.     return temp;
  114.  
  115. }
  116.  
  117.  
  118.  
  119. ostream& operator<<(ostream& out, const DinString& ds) {
  120.     if(ds.duzina > 0)
  121.         out << ds.text;
  122.  
  123.     return out;
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement