С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти произведение отрицательных элементов массива http://www.cyberforum.ru/cpp-beginners/thread1084383.html
Ребята я болел когда в институте мы проходили массивы... Может мне кто то с этим помочь? Исходные данные для всех вариантов - n вещественных величин. При написании программы используйте...
C++ Найти ближайшее к данному число, которое делится на 3, но не делится на 2. Нужно решить задания(Как можно проще...простые коды..(for,while,if,scanf,printf...)) 2)Дано натуральное число. Найти ближайшее к нему натуральное число, которое делится на 3, но не делится на 2. http://www.cyberforum.ru/cpp-beginners/thread1084381.html
C++ Посчитать значение суммы для заданных параметров.
Нужно решить задания(Как можно проще...простые коды..(for,while,if,scanf,printf...)) 3)Для заданных x и n вычислить y = ∑ x2/(2i - 1), i = 1..n
Удалить из предложения слова, состоящие менее чем из 3 символов. C++
Помогите пожалуйста в чем ошибка( Удалить из предложения менее, чем из 3 букв? #include <iostream> #include <vector> #include <iterator> #include <algorithm> #include <string> #include...
C++ Функции добавления подстроки и удаления подстроки http://www.cyberforum.ru/cpp-beginners/thread1084358.html
Написать в программе функции добавления подстроки и удаления подстроки в любом месте данного рядка.
C++ Ввод и сортировка рядка Написать программу в которой вводиться рядок слов, отсортировать слова по первой букве. подробнее

Показать сообщение отдельно
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.