Перегрузка оператора “-”

217
29 декабря 2017, 00:57

Здравствуйте. Задача: создать класс символьной строки и несколько объектов разработанного класса (a,b,c). Реализовать для объектов данного класса перегрузку оператора operator- (с = a - b: a = "Privet", b = "vet" -> c = "Pri")

Не получается придумать, как перегрузить оператор -, помогите пожалуйста.

#include "stdafx.h"
#include <iostream>
#include <string>
#pragma warning(disable : 4996)
using namespace std;

class String
{
private:
    char *str;
    int len;
public:
    String();
    String(char *s);
    String(const String &str);
    ~String();
    String operator - (const String &op);
    void input();
    void output();
};
String::String()
{
    len = 0;
    str = new char[1];
    *str = 0;
}
String::String(char *s)
{
    len = strlen(s);
    str = new char[len + 1];
    for (int i = 0; i < len; i++)
        str[i] = s[i];
    str[len] = '\0';
}
String::String(const String &a)
{
    len = a.len;
    str = new char[len + 1];
    for (int i = 0; i < len; i++)
        str[i] = a.str[i];
    str[len] = '\0';
}
String::~String()
{
    if (str) delete[] str;
}
String String::operator - (const String &op)
{
    //???
}
void String::output()
{
        cout << "new string: " << str << endl;
}
void String::input()
{
    cout << "input string: ";
    cin>>str;
}
int main()
{
    String a("laba");
    String b("ba");
    String c;
    c = a - b;
    c.output();
    return 0;
    system("pause");
}
Answer 1

Хм... не совсем четко поставлено условие.

Я бы сделал что-то вроде

String String::operator - (const String &op)
{
    String res(*this);
    char * where = strstr(res.str,op.str);
    if (where)
    {
        memmove(where,where+strlen(op.str),
                strlen(where+strlen(op.str))+1);
        res.len = strlen(res.str);
    }
    return res;
}

Т.е. удаление первого вхождения op. Всякие проверки безопасности (ненулевые указатели и т.п.) я для простоты опустил.

READ ALSO
Ошибка в JOGL при инициализации GLProfile

Ошибка в JOGL при инициализации GLProfile

Запускаю приложение JOGL в NetBeans 81, в методе main одна строчка:

228
Hibernate, вопрос про Join&#39;ы

Hibernate, вопрос про Join'ы

Все никак не могу понять логику того, как JoinColumn определяет какую колонку с какой надо связать

251
Не делается запрос в базу SQLite

Не делается запрос в базу SQLite

ЗдравствуйтеВ проекте было много текста (bb

279
Разбить строку на слова java

Разбить строку на слова java

Здравствуйте, помогите Я прочитал строку из файла и теперь мне надо разбить ее на слова по пробелу, так же в слове поменять буквы местами и записать...

276