#include <iostream>
#include <cstring>

class MyString {
private:
    char* str;

public:
    MyString() : str(nullptr) {}

    MyString(const char* s) {
        if (s != nullptr) {
            str = new char[strlen(s) + 1];
            strcpy(str, s);
        } else {
            str = nullptr;
        }
    }

    ~MyString() {
        delete[] str;
    }

    bool operator==(const MyString& other) const {
        return strcmp(str, other.str) == 0;
    }

    MyString operator+(const MyString& other) const {
        char* result = new char[strlen(str) + strlen(other.str) + 1];
        strcpy(result, str);
        strcat(result, other.str);
        MyString concatenated(result);
        delete[] result;
        return concatenated;
    }

    friend std::ostream& operator<<(std::ostream& os, const MyString& myString) {
        os << myString.str;
        return os;
    }

    friend std::istream& operator>>(std::istream& is, MyString& myString) {
        char temp[100];
        is >> temp;
        myString = MyString(temp);
        return is;
    }

    MyString reverse() const {
        char* reversed = new char[strlen(str) + 1];
        int j = 0;
        for (int i = strlen(str) - 1; i >= 0; --i) {
            reversed[j++] = str[i];
        }
        reversed[j] = '\0';
        MyString reversedString(reversed);
        delete[] reversed;
        return reversedString;
    }

    bool isPalindrome() const {
        MyString reversed = reverse();
        return *this == reversed;
    }

    int findSubstring(const char* subStr) const {
        char* ptr = strstr(str, subStr);
        if (ptr != nullptr) {
            return ptr - str;
        }
        return -1;
    }
};

int main() {
    MyString str1("hello");
    MyString str2("world");

    if (str1 == str2) {
        std::cout << "Strings are equal." << std::endl;
    } else {
        std::cout << "Strings are not equal." << std::endl;
    }


    MyString concatenated = str1 + str2;
    std::cout << "Concatenated string: " << concatenated << std::endl;

    
    std::cout << "Enter a string: ";
    MyString input;
    std::cin >> input;
    std::cout << "You entered: " << input << std::endl;

    
    MyString reversed = input.reverse();
    std::cout << "Reversed string: " << reversed << std::endl;

    
    if (input.isPalindrome()) {
        std::cout << "The entered string is a palindrome." << std::endl;
    } else {
        std::cout << "The entered string is not a palindrome." << std::endl;
    }
    const char* subStr = "lo";
    int occurrence = input.findSubstring(subStr);
    if (occurrence != -1) {
        std::cout << "Substring '" << subStr << "' found at position " << occurrence << std::endl;
    } else {
        std::cout << "Substring '" << subStr << "' not found." << std::endl;
    }

    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: