GitHub - ZohaibCodez/text-string-clone: A custom C++ implementation of the std::string class with full memory management, operator overloading, and OOP design principles
A lightweight and educational reimplementation of the C++ std::string class for learning purposes. Built from scratch using only core C++ features โ no STL string backend.
๐ Table of Contents
- Features
- Project Structure
- Getting Started
- Sample Output
- Skills Demonstrated
- Why This Project?
- Author
- License
๐ง Features
- Manual dynamic memory management (
new/delete) - Deep copy and move semantics (Rule of Five)
- Initializer list support
- Substring, insert, erase, replace, and append
- Comparison operators:
==,!=,<,>,<=,>= - Safe
at(),find(), andsubstr()methods - Operator overloading:
+,+=,[],= - Stream I/O with
cinandcout - Exception-safe operations
๐ Project Structure
TextCloneProject/
โโโ include/ # Header files
โ โโโ text.h
โโโ src/ # Class implementation
โ โโโ text.cpp
โโโ tests/ # Usage examples
โ โโโ main.cpp
โโโ bin/ # Output binaries
โโโ Makefile # For build automation
โโโ README.md # You're reading it!
๐ Getting Started
๐จ Build the Project
make # Builds the project make run # Runs the demo make clean # Cleans build files
๐งช Example Usage
#include "text.h" int main() { text t1 = "Hello"; text t2 = "World"; text t3 = t1 + " " + t2; std::cout << "t3: " << t3 << std::endl; }
๐ Sample Output
t1: Hello
t2: World
t3 (t1 + t2): Hello World
Length of t3: 11
Capacity of t3: 12
...
๐ Skills Demonstrated
- Object-Oriented Programming (OOP)
- Rule of Five in C++
- Operator Overloading
- Exception handling
- Manual Memory Management
- Header and Source File Separation
๐ก Why This Project?
This project is part of my second-semester coursework at PUCIT, developed to master advanced C++ concepts like dynamic memory, object lifecycles, and class design without relying on the Standard Library string class.
๐งโ๐ป Author
Mr. Zohaib ๐ LinkedIn
๐ License
This project is licensed under the MIT License.