Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- #include <cstdio>
- using namespace std;
- class String{
- char *str;
- int size;
- public:
- String(const char* = "");
- ~String();
- int length();
- bool operator >(String&);
- bool operator <(String&);
- bool operator ==(String&);
- String operator +(const String&);
- friend istream& operator >>(istream&, String&);
- friend ostream& operator <<(ostream&, String&);
- };
- inline String String::operator+(const String &obj){
- int len_1 = size;
- int len_2 = obj.size;
- int concat_len = len_1 + len_2 + 1;
- char *temp = new char[concat_len];
- strcpy(temp, str);
- strcat(temp,obj.str);
- String concat(temp);
- delete[] temp;
- return concat;
- }
- inline String::String(const char *str){
- String::str = new char[strlen(str) + 1];
- strcpy(String::str, str);
- size = strlen(str);
- }
- inline String::~String(){
- delete[] str;
- str = NULL;
- }
- inline int String::length(){
- return size;
- }
- inline bool String::operator >(String &obj){
- return strcmp(str, obj.str) > 0;
- }
- inline bool String::operator <(String &obj){
- return strcmp(str, obj.str) < 0;
- }
- inline bool String::operator ==(String &obj){
- return strcmp(str, obj.str) == 0;
- }
- istream& operator >>(istream &in, String &obj){
- /* Try to do this in the constructor */
- char temp[1024];
- in.getline(temp, 1024);
- delete[] obj.str;
- obj.str = new char[strlen(temp) + 1];
- strcpy(obj.str, temp);
- obj.size = strlen(obj.str);
- return in;
- }
- ostream& operator <<(ostream &out, String &obj){
- out << obj.str;
- return out;
- }
- int main() {
- system("cls");
- cout << "Enter the first string: ";
- String str1;
- cin >> str1;
- cout << "Enter the second string: ";
- String str2;
- cin >> str2;
- String str3 = str1 + String(" ") + str2;
- cout << str3;
- cin.get();
- return 0;
- }
Add Comment
Please, Sign In to add comment