-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstring.hpp
More file actions
150 lines (122 loc) · 5.31 KB
/
string.hpp
File metadata and controls
150 lines (122 loc) · 5.31 KB
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
142
143
144
145
146
147
148
149
150
// Copyright 2018 Your Name <your_email>
#ifndef INCLUDE_STRING_HPP_
#define INCLUDE_STRING_HPP_
#include <cstddef>
#include <iostream>
class String {
public:
/// Деструктор
~String();
/// Конструктор по умолчанию
String();
/// Конструктор копирования
/// <param name="rhs">Объект, который копируем </param>
String(const String& rhs);
/// Пользовательский конструктор
/// <param name="data">Данные, которые требуется поместить в создаваемый
/// объект </param>
String(const char* data);
/// Оператор присваивания
/// <param name="data">Объект, который копируем </param>
/// <returns>Возвращаем ссылку на себя</returns>
String& operator=(const String& rhs);
/// Оператор +=
/// <param name="rhs">Объект, который стоит после знака '+=' </param>
/// <returns>Возвращаем ссылку на себя</returns>
String& operator+=(const String& rhs);
/// Оператор *=
/// <returns>Возвращаем ссылку на себя</returns>
String& operator*=(unsigned int m);
/// Оператор ==
/// <param name="rhs">Объект, который стоит после знака '==' </param>
/// <returns>Возвращаем значения равенства двух строк</returns>
bool operator==(const String& rhs) const;
/// Оператор <
/// <param name="rhs">Объект, который стоит после знака "<" </param>
/// <returns>Возвращаем значения сравнения двух строк</returns>
bool operator<(const String& rhs) const;
/// Функция поиска подстроки
/// <param name="substr">Подстрока, которую необходимо найти </param>
/// <returns>Возвращаем позицию substr. Если подстрока не найдена, то
/// возвратить -1</returns>
size_t Find(const String& substr) const;
/// Функция замены символов, заменяет все символы oldSymbol на newSymbol.
/// <param name="oldSymbol">Символ, который требуется заменить </param>
/// <param name="newSymbol">Символ, на который требуется заменить </param>
void Replace(char oldSymbol, char newSymbol);
/// Функция возвращает длину строки
/// <returns>Возвращаем длину строки</returns>
size_t Size() const;
/// Функция для определения пуста ли строка
bool Empty() const;
/// Оператор []
/// <example>
/// <code>
/// String str = "some string";
/// char symbol = str[2]; // symbol == 'm'
/// </code>
/// </example>
/// <param name="index"> Индекс символа </param>
/// <returns> Значение символа в строке с индексом index</returns>
char operator[](size_t index) const;
/// Оператор []
/// <example>
/// <code>
/// String str = "some string";
/// str[0] = 'S'; // теперь переменная str равна "Some string"
/// </code>
/// </example>
/// <param name="index"> Индекс символа </param>
/// <returns> Ссылка на символ в строке с индексом index</returns>
char& operator[](size_t index);
/// Смотри пример
/// <example>
/// <code>
/// String str = "___some string___";
/// str.RTrim('_'); // теперь переменная str равна "___some string"
/// </code>
/// </example>
/// <param name="symbol"> Значение символов, которе отрезаем </param>
void RTrim(char symbol);
/// Смотри пример
/// <example>
/// <code>
/// String str = "___some string___";
/// str.LTrim('_'); // теперь переменная str равна "some string___"
/// </code>
/// </example>
/// <param name="symbol"> Значение символов, которе отрезаем </param>
void LTrim(char symbol);
void swap(String& oth);
friend std::ostream& operator<<(std::ostream&, const String&);
private:
char* Data;
};
/// Оператор +
/// <example>
/// <code>
/// String a = "Hello";
/// String b = "World";
/// String c = a + b; // c равна "HelloWorld"
/// </code>
/// </example>
/// <returns>Возвращаем строку равную a + b</returns>
String operator+(const String& a, const String& b);
/// Оператор +
/// <example>
/// <code>
/// String a = "A";
/// String c = a * 5; // c равна "AAAAA"
/// </code>
/// </example>
String operator*(const String& a, unsigned int b);
/// Оператор !=
bool operator!=(const String& a, const String& b);
/// Оператор >
bool operator>(const String& a, const String& b);
/// Оператор вывода
/// <param name="out">Поток куда выводим строку </param>
/// <param name="str">Строка, которую выводим </param>
/// <returns>Возвращаем ссылку на поток</returns>
std::ostream& operator<<(std::ostream& out, const String& str);
#endif // INCLUDE_STRING_HPP_