Advertisement
MaPV

2.1 na 5!!!!!

Oct 14th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. class String{
  8.     char *data;
  9.     int len;
  10. public:
  11.     String (){//конструктор по-умолчанию
  12.         data = NULL;
  13.         len = -1;
  14.     }
  15.  
  16.     String (char*data);//конструктор с параметром CHAR на копировании
  17.  
  18.     ~String (){//деструктор
  19.     }
  20.     String& operator=(const String&orig){//оператор присваивания
  21.         len = strlen (orig.data);
  22.         data = new char[len + 1];
  23.         data = orig.data;
  24.  
  25.     }
  26.  
  27.     String operator+(const String&strPLUS); //оператор сложения(конкатенация)
  28.     void show_string (void);
  29.  
  30.     char operator[](const int ind)const{
  31.     return data[ind];
  32.     }
  33.  
  34.     char& operator[](const int ind){
  35.     return data[ind];
  36.     }
  37. };
  38.  
  39. String String::operator+(const String&strPLUS){
  40.     String::len += strlen (strPLUS.data);
  41.     char*tmp = new char[String::len + 1];
  42.     strcpy (tmp,String::data);
  43.     strcat (tmp,strPLUS.data);
  44.     delete[] String::data;
  45.     String::data = tmp;
  46.     return tmp;
  47. }  
  48.  
  49. String::String (char* data){
  50.     String::len = strlen (data);
  51.     String::data = new char[String::len + 1];    ///dinam vidilili pamyat
  52.     strcpy (String::data,data);
  53. }  ///конструктор, присваивает начальные значения объекту, считает len, выделяет память, kopiruet
  54.  
  55.  
  56. void String::show_string (void){
  57.     if (len == -1){
  58.         cout << "PUSTAYA STROKA\n" << endl;
  59.     } else{
  60.         cout << "STROKA\t" << data << endl;
  61.         cout << "lenght\t" << len << endl;
  62.         cout << "\n" << endl;
  63.     }
  64. } //показывает строку
  65.  
  66.  
  67. int main (){
  68.  
  69. String test1;   //пустая строка
  70. test1.show_string ();
  71.  
  72.     char strPRISV[] = "asdq";
  73.     String testPRISV = strPRISV; ///вызов присваивания
  74.     cout<< "stroka operatora prisvaivaniya:" ;
  75.      testPRISV.show_string () ;
  76.  
  77.    
  78.     char str1[255];
  79.     cout << "vvedite stroku dlya copirovaniya:  ";
  80.     cin.getline (str1,255);
  81.     String test (str1);
  82.     test.show_string ();
  83.  
  84.     char str2[255];
  85.     cout << "vvedite stroku dlya concatenation:  ";
  86.     cin.getline (str2,255);
  87.     test+str2;
  88.     test.show_string ();
  89.     cout<<"\n vdedite N elementa: ";
  90.     int n;
  91.     cin>>n;
  92.     cout<<endl;
  93.     cout<<"element pod nomerom "<<n<<": "<<test[n]<<"\n"<<endl;
  94.     test[3]='5';
  95.     test.show_string();
  96.     system("pause");
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement