Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
6 / 6 / 5
Регистрация: 04.10.2013
Сообщений: 92

Описать класс my_str и перегрузить для него операторы.

29.01.2014, 13:16. Показов 1516. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать класс my_str, содержащий длину строки и указатель на ее первый символ.
Определить для класса необходимые конструктор(ы), деструктор, а также операции
а) присваивания ( = ), осуществляющее посимвольное копирование строк;
б) сложения (+) – результатом является конкатенация исходных строк;
в) присваивание со сложением +=, к первой строке-параметру добавляется в конец вторая
строка;
г) приведения к типу char*;
д) ввод ( » ) строки, который осуществляется до символа '\n', все введенные символы-
пробелы пропускаются (не добавляются в строку).
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.01.2014, 13:16
Ответы с готовыми решениями:

Создать класс очередь Turn (содержащий числовое поле) и перегрузить для него операторы согласно условию
Помогите пожалуйста, а то я запутался очень сильно. ;c Создать класс очередь Turn (содержит числовое поле). Перегрузить операторы: ...

Описать класс Complex и перегрузить операторы
описать класс complex и перегрузиты операторы вывода в поток и ввода определив их как члены класса помогите пожалоста!!!

Реализовать класс Money для работы с денежными суммами; перегрузить операторы согласно условию
Вот условие задачи:Номиналы российских рублей могут принимать значения 1, 2, 5, 10, 50, 100, 500, 1000, 5000. Копейки представить как...

12
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.01.2014, 13:19
И где вопрос? В чем проблема?
0
6 / 6 / 5
Регистрация: 04.10.2013
Сообщений: 92
29.01.2014, 13:22  [ТС]
Vourhey, Решить это нужно, у меня не выходит
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
29.01.2014, 13:49
у меня не выходит
А что не выходит ?

П.С.
Откройте исходники std::string
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 35
29.01.2014, 14:07
Примерно делал вот так, но не знаю почему выводит в конкатенации только пустую строку. а а где присваивания просит вернуть значение, если ставить return *this; все равно ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
class my_str
{
  public:
    string str,str1;
    int length;
    void Show()
    {
    cout<<str;
    };
    my_str::my_str(){};
    my_str::my_str(int le, string g)
    {
        length=le;
        str1=g;
    }
    /*my_str operator= (const my_str&c)
    {
        for(int i=0; i<c.length;i++)
        {
            str[i]=c.str1[i];
            return *this;
        }
    }    */
    my_str operator+(const my_str&R)
    {
    my_str result;
    result.str=str+R.str;
    return result;
    }
    
    my_str::~my_str(){}
    
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"Rus");
        my_str stra(6,"Hello"), strb(5,"world"),strc=stra+strb; stra=strb;
        strb.Show();
        cout<<endl;
        strc.Show();
        cout<<endl;
    return 0;
Добавлено через 8 минут
ошибся в main
написал вот это:
C++
1
my_str stra(5,"Макро"), strb(5,"мир"),strc=stra+strb;
выводит пустую строку всё равно.
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
29.01.2014, 14:11
Решить это нужно
Могу предложить интерфейс вашего класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyString
{
  private:
          size_t SIZE;
          char * str;
  public:
         MyString(char * _str = NULL);
         MyString(const MyString & myStr);
         ~MyString();
         
         size_t size()const{ return SIZE; }
         size_t lenght()const{ return SIZE; }
         char * c_str(){ return str; }
         MyString & operator = (const MyString & myStr);
         MyString & operator + (const MyString & myStr);
         MyString & operator += (MyString & left, const MyString & right);
         friend std::ostream operator << (std::ostream out, const MyString & myStr);
};
0
29.01.2014, 14:17

Не по теме:

Цитата Сообщение от ruTwit Посмотреть сообщение
ввод ( » ) строки, который осуществляется до символа '\n'
Цитата Сообщение от egor2116 Посмотреть сообщение
C++
1
friend std::ostream operator << (std::ostream out, const MyString & myStr);
что то тут не так :)

0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
29.01.2014, 14:22
Да проглючило

Добавлено через 3 минуты
C++
1
2
 friend std::ostream & operator << (std::ostream & out, const MyString & myStr);
friend std::istream & operator >> (std::istream & in, MyString & myStr);
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 35
29.01.2014, 14:25
egor2116, не подскажешь почему при конкатенации строк выводит пустую строку, а не результат: макромир
0
29.01.2014, 14:31

Не по теме:

Цитата Сообщение от egor2116 Посмотреть сообщение
C++
1
MyString & operator += (MyString & left, const MyString & right);
не многовато аргументов у +=

0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
29.01.2014, 14:39
не подскажешь почему при конкатенации строк выводит пустую строку,
Если вы мне покажите конкатенацию в вашем коде
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
29.01.2014, 14:41
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <iostream>
using namespace std;
class my_str
{
public:
    my_str():_str(NULL), _length(0)
    {
        _str = new char[64];
    }
    my_str(char * str):_str(NULL), _length(0)
    {
        _length = strlen(str);
        _str = new char[_length+1]; 
        for(int i = 0; i < _length+1;i++)
        {
            _str[i] = str[i];
        }
    }
    my_str(const my_str & r_my_str)
    {
        _length = r_my_str._length;
        _str = new char[_length+1];
        for(int i = 0; i < _length+1;i++)
        {
            _str[i] = r_my_str._str[i];
        }
    }
    ~my_str()
    {
        if(!_str)
        {
            delete [] _str;
        }
    }
    my_str operator = (const my_str & r_my_str)
    {
        if(this == &r_my_str)
            return *this;
        _length = r_my_str._length;
        if(!_str)
        {
            delete[] _str;
            _str = NULL;
        }
        _str = new char[_length+1];
        for(int i = 0; i < _length+1;i++)
        {
            _str[i] = r_my_str._str[i];
        }
        return *this;
    }
    my_str operator+(const my_str & r_my_str)
    {
        my_str tmp;
        tmp._length = _length+r_my_str._length;
        if(tmp._str)
        {
            delete[] tmp._str;
            tmp._str = NULL;
        }
        tmp._str = new char[tmp._length+1];
        for(int i = 0; i < _length;i++)
        {
            tmp._str[i] = _str[i];
        }
        for(int i = _length; i < tmp._length+1;i++)
        {
            tmp._str[i] = r_my_str._str[i-_length];
        }
        return tmp;
    }
    const my_str& operator+=(const my_str & r_my_str)
    {
        char * tmp = new char[_length];
        unsigned int tmp_length = _length;
        for(int i = 0; i < _length;i++)
        {
            tmp[i] = _str[i];
        }
        if(_str)
        {
            delete[] _str;
            _str = NULL;
        }
        _length += r_my_str._length;
        _str = new char[_length+1];
        for(int i = 0; i < tmp_length;i++)
        {
            _str[i] = tmp[i];
        }
        for(int i = tmp_length; i < _length+1;i++)
        {
            _str[i] = r_my_str._str[i-tmp_length];
        }
        delete[]tmp;
        return *this;
    }
    operator char*()
    {
        return _str;
    }
    friend istream& operator>>(istream & is, my_str & r_my_str)
    {
        if(!r_my_str._str)
        {
            delete[] r_my_str._str;
        }
 
    }
    unsigned int GetLength() const
    {
        return _length;
    }
private:
    char * _str;
    unsigned int _length;
};
int main()
{
    char str[] = "1234";
    my_str MyStr1;
    my_str MyStr2;
    my_str MyStr3(str);
 
    MyStr1 = MyStr3;
    my_str MyStr4;
    MyStr4 = MyStr1+MyStr3;
    MyStr4+=MyStr3;
    char * a = (char*)MyStr4;
    system("pause");
    return 0;
}
operator >> недоделан, что то он меня в ступор вогнал
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 35
29.01.2014, 14:43
egor2116, тогда подскажи как правильно её организовать что бы сложить 2 строки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2014, 14:43
Помогаю со студенческими работами здесь

Перегрузка операторов. Реализовать класс String для работы со строками символов. Перегрузить операторы «=», «+=»
Реализовать класс String для работы со строками символов. Перегрузить операторы «=», «+=» так, чтобы производилось сложение строки и...

Описать класс для хранения массива чисел. Перегрузить оператор %
Описать класс для хранения массива чисел. Перегрузить в классе оператор %, который должен находить остаток от деления элементов первого...

Описать класс для хранения массива чисел. Перегрузить в классе оператор *
Привет. Описать класс для хранения массива чисел. Перегрузить в классе оператор *, который должен находить произведение четных элементов...

Создать класс Array и перегрузить операторы
Здравствуйте, у меня проблема при перегрузке операторов +-/*, я сделал их, но перегрузка не соответствует заданию Создайте класс Array...

Создать класс Complex и перегрузить операторы
Создайте класс с именем Complex для выполнения арифметических операций с комплексными числами. Напишите программу для тестирования вашего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru