Advertisement
Guest User

Untitled

a guest
Sep 17th, 2014
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. #include <locale.h>
  6. using namespace std;
  7.  
  8.  
  9. class stringg{
  10. private:
  11. char *str;
  12. int size;
  13.  
  14. public:
  15. stringg()//пустая строка
  16. {
  17.  
  18.  
  19.  
  20. str=new char[1];
  21. *str='\0';
  22. size=0;
  23. printf("Вывод пустой строки. \n");
  24.  
  25. }
  26.  
  27. stringg (char *a)//констуктор с char *a
  28. {
  29.  
  30. str=new char[strlen(a)+1];
  31. strcpy(str,a);
  32. size=strlen(a);
  33. printf("Конструктор с параметром char *:");
  34. printf("%s\n", str);
  35.  
  36. }
  37.  
  38. stringg(stringg &x)//копирование
  39. {
  40. size=x.size;
  41. str=new char[size+1];
  42. for(int i=0;i<size;i++)
  43. str[i]=x.str[i];
  44. str[size]='\0';
  45. printf("Оператор копирования:");
  46. printf("%s\n", str);
  47.  
  48. }
  49.  
  50. ~stringg()//деструктор
  51. {
  52. if(size!=0)
  53. delete []str;
  54. }
  55.  
  56. stringg& operator=(const stringg& a)//оператор присваивания
  57. {
  58. str=a.str;
  59. size=a.size;
  60. return *this;
  61.  
  62. }
  63. operator char*()const //приведение к const char*
  64. {
  65. return str;
  66. }
  67.  
  68. stringg& operator+( const stringg& other)//конкатенация с "+"
  69. {
  70. char *str2= new char[size+other.size+2];
  71. strcpy(str2, str);
  72. strcat(str2, other.str);
  73. size+=other.size;
  74. printf("Конкатенация двух строк с помощью +:");
  75. printf("%s\n", str2);
  76. return *this;
  77. }
  78.  
  79. stringg& operator+=(const stringg& other)//конкатенация с "+="
  80. {
  81. char *Data= new char[size+other.size+2];
  82. strcpy(Data, str);
  83. strcat(Data, other.str);
  84. str=Data;
  85. size+=other.size;
  86. printf("Конкатенация двух строк с помощью +=:");
  87. printf("%s\n", str);
  88. return *this;
  89. }
  90. };
  91.  
  92. void main()
  93. {
  94. setlocale(LC_ALL, ".ACP");
  95.  
  96. stringg s;
  97. stringg s2("Собачка");
  98. stringg s3(s2);
  99. stringg s4("Кошка");
  100. stringg s5("Мышка");
  101. s2+=s4;
  102. s4+s5;
  103.  
  104.  
  105. _getch();
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement