для класса 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);
};
Не знаю, как у вас хранится строка (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;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем приветВ общем, создал проект Windows Application С++
Есть расширение для хрома, которое обрабатывает все цвета на открытой вкладке и выводит их в popup, например вот так — rgb(192, 72, 72) и так далее
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение