Класс для работы со строчками

Всем привет.Есть у меня задание *Создать класс для работы со строчками. Максимальная длина последовательности – 254. Первый байт должен содержать информацию о фактическом количестве элементов массива. Совершить перегрузку операций:

  • "=" – присвоение,

  • "+" – конкатенация (соединение) строк,

  • "<=" – отношение "меньше или равно",

  • " >= " – отношение "больше или равно",

  • "==" – отношение "равно",

  • "!=" – отношение "не равно".

В классе предусмотреть конструктор инициализации, конструктор копирования, деструктор.*

Вот мой код,там не все перегрузки. Файл main.cpp

#include <iostream>
#include <string.h>
#include "line.h"

using namespace std;

int main(){
    setlocale(LC_ALL , "Ukrainian");
    String input1,input2;
    int change;
    cout << "Введiть перший рядок: ";
    cin >> input1;
    cout << "Введiть другий рядок: ";
    cin >> input2;
    cout << "\t\tДiї" << endl;
    cout << "1.Присвоєння рядкiв;" << endl;
    cout << "2.Конкатенацiя(з'єднання) рядкiв;" << endl;
    cout << "3.Вiдношення(бiльше чи дорiвнює);" << endl;
    cout << "4.Вiдношення(бiльше чи дорiвнює);" << endl;
    cout << "5.Вiдношення(дорiвнює);" << endl;
    cout << "6.Вiдношення(не дорiвнює)." << endl;
    cout << "Ваш вибiр: ";
    cin >> change;  
    switch(change){
    case 1:{
        input2 = input1;
        cout << input2;
        break;
    }
    case 2:{
        input2 == input1;
        break;
    }
    case 3:{
        break;
    }
    case 4:{
        
        break;
    }
    case 5:{
        
        break;
    }
    case 6:{
        
        break;
    }
    
    default:{
        cout << "Неправильно введене значення..." << endl;
        return 1;
        break;
    }
} 
return 0;
}

И второй файл с самим классом

#include <iostream>
#include <string.h>

using namespace std;

class String{ 
public:
    char *str;

    String();
    ~String();
    String operator = (String &line);
    void operator + (String &line);
    void operator <= (String &line);
    void operator >= (String &line);
    bool operator == (String &line);
    void operator != (String &line);

    friend ostream &operator<<(ostream &stream, String obj);
    friend istream &operator>>(istream &stream, String obj);
};

String::String(){
    str = new char[256];    
}

String::~String(){
    delete[] str;
}

String String::operator = (String &line){
    strcpy(str,line.str);
    return *this;
}

bool String::operator == (String &line){
    return strcmp(str,line.str);
}


ostream &operator<<(ostream &stream, String obj){
   stream<<obj.str;
   return stream;
}

istream &operator>>(istream &stream, String obj){
   stream>>obj.str;
   return stream;
}

Реализовал пока что только оператор присваивания и сравнения но они крашатся почему-то. Понимаю что мог сделать где-то глупую ошибку,потому что нам можно сказать толком ничего и не обьяснили.


Ответы (0 шт):