{"id":21534451,"url":"https://github.com/ilyachvanov/string","last_synced_at":"2025-03-17T20:14:40.276Z","repository":{"id":236021747,"uuid":"791742035","full_name":"IlyaChvanov/String","owner":"IlyaChvanov","description":"Self made std::string","archived":false,"fork":false,"pushed_at":"2024-08-21T10:20:37.000Z","size":176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-24T07:11:26.232Z","etag":null,"topics":["incapsulation","operator-overloading"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IlyaChvanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-25T09:29:49.000Z","updated_at":"2024-08-21T10:20:40.000Z","dependencies_parsed_at":"2024-06-28T09:29:49.433Z","dependency_job_id":"20fd1817-d3fc-4dfb-8d31-47caf31eb307","html_url":"https://github.com/IlyaChvanov/String","commit_stats":null,"previous_names":["ilyachvanov/string"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IlyaChvanov%2FString","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IlyaChvanov%2FString/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IlyaChvanov%2FString/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IlyaChvanov%2FString/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IlyaChvanov","download_url":"https://codeload.github.com/IlyaChvanov/String/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244102855,"owners_count":20398386,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["incapsulation","operator-overloading"],"created_at":"2024-11-24T03:10:48.536Z","updated_at":"2025-03-17T20:14:40.252Z","avatar_url":"https://github.com/IlyaChvanov.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n#Разработка класса MyString\n\n### Задача №1\n\n\u003e Разработать класс MyString. \n\nХранение символов осуществляется в динамическом массиве.\n\n- **MyString( const char\\* )** - конструктор с одним параметром (есть значение по-умолчанию **nullptr**).\n- **MyString( std::string )** - конструктор с одним параметром.\n- **MyString( const MyString\u0026 )** - конструктор копирования.\n- **MyString( MyString\u0026\u0026 )** -  конструктор переноса.\n- **~MyString()** - деструктор.\n- **length()** - количество символов (длина строки).\n- **get()** - возвращение указателя на данные (тип `char*`).\n\n\u003e Реализовать в классе MyString перегрузку операций:\n\n- **operator+** - сложение (конкатенация двух строк).\n- **operator-** - вычитание (из первой строки удаляются все символы, присутствующие во второй строке).\n- **operator*** - умножение на целое число (строка повторяется заданное число раз).\n- **operator=** - копирующее присваивание.\n- **operator=** - перемещающее присваивание.\n- **operator==** - сравнение на равенство.\n- **operator!=** - сравнение на неравенство.\n- **operator\u003e** - лексографическое сравнение .\n- **operator\u003c** - лексографическое сравнение. \n- **operator\u003e=** - лексографическое сравнение. \n- **operator\u003c=** - лексографическое сравнение. \n- **operator!** - у латинских букв меняется регистр.\n- **operator[]** - доступ к символу по индексу.\n- **operator()** - поиск подстроки.\n- **operator\u003e\u003e** - чтение из потока.\n- **operator\u003c\u003c** - запись в поток.\n\n*Примечание*\n\nКласс и методы можно использовать следующим образом:\n\n```cpp\n#include \"MyString.h\"\n\nint main()\n{\n    MyString s1(\"Hello,\");\n    MyString s2(\"world!\");\n    MyString s3;\n    s3 = s1 + s2;\n    std::cout \u003c\u003c s3;\n    std::cout \u003c\u003c s3(\"ll\");   // 2\n    std::cout \u003c\u003c s3(\"mama\"); // -1\n}\n```\n\n### Задача №2\n\n\u003e Написать демонстрационную программу с использованием класса **MyString**\n\n### Задача №3\n\n\u003e Необходимо оформить код в соответствии со стандартом, описанном в https://google.github.io/styleguide/cppguide.html .\n\u003e Статья на хабре на русском: https://habr.com/ru/articles/480422/\n\n## Структура проекта\n\n- **MyString.h** - заголовочный файл для класса **MyString**.\n- **MyString.cpp** - файл с реализацией методов класса **MyString**.\n- **main.cpp** - домонстрационная программы для работы с классом **MyString**.\n\nФайл `MyString.h` помещаются в каталог `include`\nФайлы `MyString.cpp, main.cpp` помещаются в каталог `src` \n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filyachvanov%2Fstring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filyachvanov%2Fstring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filyachvanov%2Fstring/lists"}