Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2011, 21:05   #1
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
Сообщение сложение строк

Проблема: не могу получить результат. Что у меня не так?
Код:
class base
{
private:
        char* str;
        int size;
public:
    base( char *str1) 
        { 
                size = strlen(str1);
                str = new char[size+1];
                strcpy(str,str1); 
        }
        ~base()
        {
                size = 0; delete[] str;
        }
            void print() { cout<<str<<endl;}
        base operator + (base bs);
};
 
base base::operator +(base bs)
{
        base result ("            ");
        int length;
        strcpy(result.str,bs.str);
        length = strlen(bs.str);
        memcpy(result.str,str+length,strlen(str));
        result.size= strlen(result.str)+1;
        result.str[result.size] = '\0';
        return (result);
}
 
void main()
{
        base obj1("111"),obj2("222"),obj3("                      ");
        obj3 = obj1 + obj2;
        obj3.print();
        system("pause");
}
zhenya.ya вне форума Ответить с цитированием
Старый 07.03.2011, 03:00   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
class base
{
private:
        char* str;
        int size;
public:
	
    base() { str= 0; size=0;}                                 // добавил

    base( char *str1) 
        { 
                size = strlen(str1);
                str = new char[size+1];
                strcpy(str,str1); 
        }

	base (const base& obj) {                                 // добавил
		str = new char[obj.size+1];
		size=obj.size;
        strcpy(str,obj.str); 
	}

        ~base()
        {
             delete[] str;
        }
        void print() { cout<<str<<endl;}

        base operator+ (base bs);
	base operator= (base bs);
};
 
base base::operator +(base bs)                             // переписал
{
        base result;
		result.str = new char[size+1+bs.size+1];
		strcpy(result.str,str);
		strcat(result.str,bs.str);
		result.size=size+bs.size;

        return result;
}

base base::operator =(base bs)                              // добавил
{
	if (str) delete[] str;

	str = new char[bs.size+1];
	strcpy(str,bs.str);
	size=bs.size;

	return *this;
}
 
void main()
{
        base obj1("111"),obj2("222"),obj3;
        obj3 = obj1 + obj2;
        obj3.print();
        system("pause");
}
base result (" ");
base obj3(" "); -- это вообще люто

Последний раз редактировалось onewho; 07.03.2011 в 03:06.
onewho вне форума Ответить с цитированием
Старый 07.03.2011, 13:39   #3
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
По умолчанию

огромное спасибо
zhenya.ya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строк в таблицу с вставкой в них текста и чередованием фона строк Centurion2xx6 Microsoft Office Word 9 30.03.2010 11:00
функция,которая выполняет сложение двух чисел,заданных в виде строк 6kakain9 Помощь студентам 3 10.02.2010 17:55
Сложение в БД Oleg Romanchuk Помощь студентам 5 24.11.2009 09:30
Сложение строк. Дырдин Общие вопросы C/C++ 16 12.11.2009 19:30
Сложение Droid Общие вопросы Delphi 14 07.05.2008 13:23