Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для crazykreis
37 / 21 / 17
Регистрация: 13.04.2016
Сообщений: 106

Реализовать класс для работы со строками

21.03.2017, 10:24. Показов 4128. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста помогите с заданием

Необходимо реализовать класс TString. В процессе выполнения задания нельзя пользоваться классом std::string и подобными ему, а так же функциями работы со строками из языка СИ (strlen, strcpy, strcat и др.). Класс должен содержать следующие методы:

Конструктор по умолчанию
Конструктор копирования
Оператор присваивания
Пользовательский конструктор, принимающий char *
Оператор + и +=, который реализует конкатенацию двух строк
Оператор ==, !=, <, >
Метод Find
Метод Replace
Метод Size
Оператор []
Метод Empty
RTrim, LTrim
Оператор вывода

Объявление класса:
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
133
134
135
136
137
138
139
140
141
#include <iostream>
class TString
{
    char * Data;
public:
    /// <summary> Деструктор </summary> 
    ~TString();
 
 
    /// <summary> Конструктор по умолчанию </summary>  
    TString();
 
 
    /// <summary> Конструктор копирования </summary>  
    /// <param name="rhs">Объект, который копируем </param>  
    TString(const TString& rhs);
 
 
    /// <summary> Пользовательский конструктор </summary>  
    /// <param name="data">Данные, которые требуется поместить в создаваемый объект </param>  
    TString(const char * data);
 
 
    /// <summary> Оператор присваивания </summary>  
    /// <param name="data">Объект, который копируем </param>  
    /// <returns>Возвращаем ссылку на себя</returns>  
    TString& operator =(const TString& rhs);
 
 
    /// <summary> Оператор += </summary>  
    /// <param name="rhs">Объект, который стоит после знака '+=' </param>  
    /// <returns>Возвращаем ссылку на себя</returns>  
    TString& operator +=(const TString& rhs);
 
 
    /// <summary> Оператор == </summary>  
    /// <param name="rhs">Объект, который стоит после знака '==' </param>  
    /// <returns>Возвращаем значения равенства двух строк</returns>  
    bool operator ==(const TString& rhs) const;
 
 
    /// <summary> Оператор &lt; </summary>  
    /// <param name="rhs">Объект, который стоит после знака "&lt;" </param>  
    /// <returns>Возвращаем значения сравнения двух строк</returns>  
    bool operator <(const TString& rhs) const;
 
 
    /// <summary> Функция поиска подстроки</summary>  
    /// <param name="substr">Подстрока, которую необходимо найти </param>  
    /// <returns>Возвращаем позицию substr. Если подстрока не найдена, то возвратить -1</returns> 
    size_t Find(const TString& substr) const;
 
 
    /// <summary> Функция замены букв </summary>  
    /// <param name="oldSymbol">Символ, который требуется заменить </param>  
    /// <param name="newSymbol">Символ, на который требуется заменить </param>
    void Replace(char oldSymbol, char newSymbol);
 
 
    /// <summary> Функция возвращает длину строки </summary>  
    /// <returns>Возвращаем длину строки</returns> 
    size_t Size() const;
 
 
    /// <summary> Функция для определения пуста ли строка </summary>  
    bool Empty() const;
 
 
    /// <summary> Оператор [] </summary> 
    /// <example> 
    /// <code>
    /// TString str = "some string";
    /// char symbol = str[2]; // symbol == 'm'
    /// </code>
    /// </example>
    /// <param name="index"> Индекс символа </param>  
    /// <returns> Значение символа в строке с индексом index</returns> 
    char operator[](size_t index) const;
 
 
    /// <summary> Оператор [] </summary> 
    /// <example> 
    /// <code>
    /// TString str = "some string";
    /// str[0] = 'S'; // теперь переменная str равна "Some string"
    /// </code>
    /// </example>
    /// <param name="index"> Индекс символа </param>  
    /// <returns> Ссылка на символ в строке с индексом index</returns> 
    char& operator[](size_t index);
 
 
    /// <summary> Смотри пример </summary> 
    /// <example> 
    /// <code>
    /// TString str = "___some string___";
    /// str.RTrim('_'); // теперь переменная str равна "___some string"
    /// </code>
    /// </example>
    /// <param name="symbol"> Значение символов, которе отрезаем </param> 
    void RTrim(char symbol);
 
 
    /// <summary> Смотри пример </summary> 
    /// <example> 
    /// <code>
    /// TString str = "___some string___";
    /// str.LTrim('_'); // теперь переменная str равна "some string___"
    /// </code>
    /// </example>
    /// <param name="symbol"> Значение символов, которе отрезаем </param> 
    void LTrim(char symbol);
 
    friend std::ostream & operator<<(std::ostream &, const TString &);
};
 
/// <summary> Оператор +</summary>  
/// <example> 
/// <code>
/// TString a = "Hello";
/// TString b = "World";
/// TString c = a + b; // c равна "HelloWorld"
/// </code>
/// </example>
/// <returns>Возвращаем строку равную a + b</returns>  
TString operator+(const TString & a, const TString & b);
 
 
/// <summary> Оператор !=</summary>
bool operator!=(const TString & a, const TString & b);
 
 
/// <summary> Оператор &gt;</summary>
bool operator>(const TString & a, const TString & b);
 
 
/// <summary> Оператор вывода </summary>  
/// <param name="out">Поток куда выводим строку </param>  
/// <param name="str">Строка, которую выводим </param>
/// <returns>Возвращаем ссылку на поток</returns> 
std::ostream & operator<<(std::ostream &out, const TString &str);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2017, 10:24
Ответы с готовыми решениями:

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

Класс для работы со строками CString
Написать текстовый редактор с параметрами 1. Вставка в начало 2. Копирование строк 3. Поиск в строке Мне непонятна одна вещь: как...

Создать класс для работы сo строками
Создать класс для работы сo строками. Разработать элементы класса: a. Поля: * указатель на char - хранит адрес динамически выделенной...

2
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
21.03.2017, 10:59
В общем случае, для оформления кода,
выделите код и нажмите на кнопку соответствующего языка (см. изображение)
1
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
21.03.2017, 11:46
crazykreis, Так помочь или сделать за вас? Если первое то что именно не работает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2017, 11:46
Помогаю со студенческими работами здесь

Написать класс для эффективной работы со строками
Написать класс для эффективной работы со строками, что позволяет форматировать и сравнивать строки, хранить в строках числовые значения и...

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

Разработать класс String для работы со строками
/*Разработать класс String для работы со строками. Класс должен содержать: - Конструктор по умолчанию, позволяющий создать строку...

Создайте класс для работы со строками CString
Создайте класс для работы со строками CString, поддерживающий следующие операции-методы: сравнение, копирование, объединение двух строк....

Написать класс для эффективной работы со строками
Вариант 13 Написать класс для эффективной работы со строками, позволяющий форматировать и сравнивать строки, хранить в строках числовые...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru