Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ilyachvanov/string
Self made std::string
https://github.com/ilyachvanov/string
incapsulation operator-overloading
Last synced: about 1 month ago
JSON representation
Self made std::string
- Host: GitHub
- URL: https://github.com/ilyachvanov/string
- Owner: IlyaChvanov
- Created: 2024-04-25T09:29:49.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2024-08-21T10:20:37.000Z (5 months ago)
- Last Synced: 2024-08-21T11:48:20.299Z (5 months ago)
- Topics: incapsulation, operator-overloading
- Language: C++
- Homepage:
- Size: 172 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#Разработка класса MyString
### Задача №1
> Разработать класс MyString.
Хранение символов осуществляется в динамическом массиве.
- **MyString( const char\* )** - конструктор с одним параметром (есть значение по-умолчанию **nullptr**).
- **MyString( std::string )** - конструктор с одним параметром.
- **MyString( const MyString& )** - конструктор копирования.
- **MyString( MyString&& )** - конструктор переноса.
- **~MyString()** - деструктор.
- **length()** - количество символов (длина строки).
- **get()** - возвращение указателя на данные (тип `char*`).> Реализовать в классе MyString перегрузку операций:
- **operator+** - сложение (конкатенация двух строк).
- **operator-** - вычитание (из первой строки удаляются все символы, присутствующие во второй строке).
- **operator*** - умножение на целое число (строка повторяется заданное число раз).
- **operator=** - копирующее присваивание.
- **operator=** - перемещающее присваивание.
- **operator==** - сравнение на равенство.
- **operator!=** - сравнение на неравенство.
- **operator>** - лексографическое сравнение .
- **operator<** - лексографическое сравнение.
- **operator>=** - лексографическое сравнение.
- **operator<=** - лексографическое сравнение.
- **operator!** - у латинских букв меняется регистр.
- **operator[]** - доступ к символу по индексу.
- **operator()** - поиск подстроки.
- **operator>>** - чтение из потока.
- **operator<<** - запись в поток.*Примечание*
Класс и методы можно использовать следующим образом:
```cpp
#include "MyString.h"int main()
{
MyString s1("Hello,");
MyString s2("world!");
MyString s3;
s3 = s1 + s2;
std::cout << s3;
std::cout << s3("ll"); // 2
std::cout << s3("mama"); // -1
}
```### Задача №2
> Написать демонстрационную программу с использованием класса **MyString**
### Задача №3
> Необходимо оформить код в соответствии со стандартом, описанном в https://google.github.io/styleguide/cppguide.html .
> Статья на хабре на русском: https://habr.com/ru/articles/480422/## Структура проекта
- **MyString.h** - заголовочный файл для класса **MyString**.
- **MyString.cpp** - файл с реализацией методов класса **MyString**.
- **main.cpp** - домонстрационная программы для работы с классом **MyString**.Файл `MyString.h` помещаются в каталог `include`
Файлы `MyString.cpp, main.cpp` помещаются в каталог `src`