Advertisement
werandrew

Untitled

Mar 19th, 2021
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. #include <vector>
  4. #include <locale>
  5. using namespace std;
  6.  
  7. class String{
  8.     int len;
  9.     char *str;
  10.  
  11. public:
  12.     String();
  13.     String(char *);
  14.     //конструктор копирования
  15.      String(const String &);
  16.  
  17.      //PRISVAIVANIE
  18.      String & operator=(const String &);
  19. //void push_back(char);
  20. void push_back(char);
  21.      //destructor
  22.      ~String();
  23.  
  24.      //ВВод и ВЫвод
  25.      friend istream & operator>>(istream &, String &);
  26.     friend ostream & operator<<(ostream &,const String &);
  27.      //конкатенация сложение
  28.      //вставка подстроки
  29.      //замена символов
  30.      //Индексация - символ по индексу
  31.      //Ударение подстроки символа
  32.      //reverse
  33.      //Получение длины
  34.      //Поиск символов и подстроки
  35.      //поиск слов
  36. };
  37.  
  38. String::String(){len=0;str=new char[1]; str[0]='\0';}
  39. String::String(char * s){len=strlen(s); str = new char[len+1];
  40. for(int i=0;i<len;++i)
  41.     str[i]=s[i];
  42.     str[len]='\0';
  43. }
  44. String::String(const String &s){
  45. len=s.len;
  46. str = new char[len+1];
  47. for(int i=0;i<len;++i)
  48.     str[i]=s.str[i];
  49.     str[len]='\0';
  50.  
  51. }
  52. /*
  53. void String::push_back(char n){
  54.  
  55.  
  56.  
  57.  if (size == capacity)
  58.         {
  59.             capacity *= 2;
  60.             int *tmp = new int[capacity];
  61.             memmove(tmp, p, sizeof(*p) * size);
  62.             delete[] p;
  63.             p = tmp;
  64.         }
  65.         p[size++] = val;
  66. */
  67.  
  68.  
  69.  
  70.  
  71. void String:: push_back(char n){
  72.  str+=n;
  73. }
  74.  
  75.  
  76.  
  77. String & String::operator=(const String & s){
  78. if(this==&s)
  79.     return *this;
  80.  
  81. delete[] str;
  82. len=s.len;
  83. str = new char[len+1];
  84. for(int i=0;i<len;++i)
  85.     str[i]=s.str[i];
  86.     str[len]='\0';
  87.     return *this;
  88. }
  89. String::~String(){delete []str;}
  90.  
  91.  
  92.  
  93. istream & operator>>(istream &inp, String &s){
  94.  char buffon [100001];
  95.  inp.getline(buffon, 100001);
  96.  s.len=strlen(buffon);
  97.  delete[]s.str;
  98.  s.str=new char[s.len+1];
  99.  for(int i=0; i<s.len;++i)
  100.     s.str[i]=buffon[i];
  101.  s.str[s.len]='\0';
  102.  return inp;
  103.  }
  104.      ostream & operator<<(ostream &out,const String & s){
  105.           for(int i=0; i<s.len;++i)
  106.  
  107.     out<<s.str[i];
  108.     return out;
  109.     }
  110.  
  111.  
  112. int main() {
  113.     String s;
  114.     char n;
  115.     cin >> s;
  116.     cin>>n;
  117.     s.push_back(n);
  118.     cout << s;
  119.     return 0;
  120. }
  121.  
  122.  
  123.  
  124.  
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement