перегрузка оператора ()(int,int)

191
23 октября 2021, 22:20

для класса String требуется перегрузить несколько операторов,возник вопрос с перегрузкой оператора ()(int,int) -возвращение подстроки объекта.Как это можно реализовать?

class MyString
{
    private:
    char *str;
    size_t size;
    public:
    MyString();
    MyString(const char *str);
    ~MyString();
    void Print();
    int Length();
    MyString operator ()(int,int);
    void operator +=(const MyString &other);
    MyString(const MyString &other);
    friend ostream &operator<<(ostream &stream, MyString other);
    friend istream &operator>>(istream &stream, MyString &other);
};
Answer 1

Не знаю, как у вас хранится строка (size ее длина или зазмер выделенной памяти, непонятно, как считать конец подстроки - что второй аргумент указывает на последний символ подстроки или за подстроку. Я считаю, что на последний символ подстроки.

Тогда получается так:

MyString operator ()(int b,int e) {
    if (b < 0 || e < 0 || b > e || e >= strlen(str)) throw exception("Неверные данные");
    char * s = new char[e-b+2];
    for(int i = b; i <= e; i++) s[i-b] = str[i];
    s[e-b+1] = 0;
    MyString ret(s);
    delete[]s;
    return ret;
    }
READ ALSO
Как открыть дизайнер формы в проекте Windows Application C++?

Как открыть дизайнер формы в проекте Windows Application C++?

Всем приветВ общем, создал проект Windows Application С++

174
Ошибка Segmentation fault

Ошибка Segmentation fault

Вылетает в этой фукции:

246
Как поймать клик с помощью event.target в popup.js и передать его content.js

Как поймать клик с помощью event.target в popup.js и передать его content.js

Есть расширение для хрома, которое обрабатывает все цвета на открытой вкладке и выводит их в popup, например вот так — rgb(192, 72, 72) и так далее

222
Передать данные из HTML в JS [закрыт]

Передать данные из HTML в JS [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

155