Advertisement
plarmi

workcpp 4_1

Jun 14th, 2023
479
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. class String {
  5. private:
  6.     char* str;
  7.     int size;
  8.  
  9. public:
  10.     // Конструктор по умолчанию
  11.     String() : size(80) {
  12.         str = new char[size + 1];
  13.         std::memset(str, '\0', size + 1);
  14.     }
  15.  
  16.     // Конструктор, позволяющий создавать строку произвольного размера
  17.     explicit String(int s) : size(s) {
  18.         str = new char[size + 1];
  19.         std::memset(str, '\0', size + 1);
  20.     }
  21.  
  22.     // Конструктор, который создаёт строку и инициализирует её строкой, полученной от пользователя
  23.     String(const char* s) : size(std::strlen(s)) {
  24.         str = new char[size + 1];
  25.         std::memcpy(str, s, size + 1);
  26.     }
  27.  
  28.     // Конструктор копирования
  29.     String(const String& other) : size(other.size) {
  30.         str = new char[size + 1];
  31.         std::memcpy(str, other.str, size + 1);
  32.     }
  33.  
  34.     // Деструктор
  35.     ~String() {
  36.         delete[] str;
  37.     }
  38.  
  39.     // Метод для ввода строки с клавиатуры
  40.     void read() {
  41.         std::cin.getline(str, size + 1);
  42.         size = std::strlen(str);
  43.     }
  44.  
  45.     // Метод для вывода строки на экран
  46.     void print() const {
  47.         std::cout << str << std::endl;
  48.     }
  49. };
  50.  
  51. int main() {
  52.     String s1; // Создание строки длиной 80 символов
  53.     s1.read(); // Ввод строки с клавиатуры
  54.     s1.print(); // Вывод строки на экран
  55.  
  56.     String s2(50); // Создание строки длиной 50 символов
  57.     String s3("Hello, world!"); // Создание строки и инициализация её значением
  58.     String s4(s3); // Создание копии строки s3
  59.  
  60.     return 0;
  61. }
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement