Implementing string

22
C++ Algorithms Prepared by Mohammed Sikander Team Lead Cranes Varsity

Transcript of Implementing string

C++ Algorithms

Prepared by Mohammed SikanderTeam LeadCranes Varsity

Mohammed Sikander www.cranessoftware.com

int main( ){

char *ptr = "SIKANDER";string str = "SIKANDER";cout << sizeof(ptr) << endl;cout << sizeof(str) << endl;

}

Mohammed Sikander www.cranessoftware.com

int main( ){

char *ptr = "SIKANDER";string str = "SIKANDER";ptr[0] = ‘A’;str[0] = 'A';cout << ptr << endl;cout << str << endl;

}

Mohammed Sikander www.cranessoftware.com

int main( ){

char *ptr ;string str ;cin >> ptr;cin >> str;cout << ptr << endl;cout << str << endl;

}

Mohammed Sikander www.cranessoftware.com

class MyString{

char *ptr;};int main( ){

MyString ms1;cout << sizeof(ms1) << endl;

}

class MyString{

char *ptr;};int main( ){

MyString ms1;cout << sizeof(ms1) << endl;MyString ms2 ("ASDF");

}

Mohammed Sikander www.cranessoftware.com

class MyString{

char *str;public : MyString(const char *ptr)

{int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}};int main( ){

MyString ms1;cout << sizeof(ms1) << endl;MyString ms2 ("ASDF");

}

class MyString{

char *str;public : MyString( )

{str = NULL;

}MyString(const char *ptr){

int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}};

Mohammed Sikander www.cranessoftware.com

class MyString{

char *str;public : MyString( )

{ str = NULL; }MyString(char *ptr){

int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}

char operator [ ](int index){

return str[index];}

};

int main( ){

MyString ms2 ("ASDF");

for(int i = 0 ; i < 4 ; i++){

ms2[i] = ms2[i] + 1;cout << ms2[i] << endl;

}}

int main( ){MyString ms2 ("ASDF");for(int i = 0 ; i < 4 ; i++)

cout << ms2[i] << endl;}

Mohammed Sikander www.cranessoftware.com

class MyString{

char *str;public : MyString( )

{ str = NULL; }MyString(const char *ptr){

int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}

char & operator [ ](int index){

return str[index];}

};

int main( ){

MyString ms2 ("ASDF");

for(int i = 0 ; i < 4 ; i++){

ms2[i] = ms2[i] + 1;cout << ms2[i] << endl;

}}

int main( ){MyString ms2 ("ASDF");for(int i = 0 ; i < 4 ; i++)

cout << ms2[i] << endl;}

Mohammed Sikander www.cranessoftware.com

MyString MyString ::operator +(const MyString &rhs) const{

MyString temp;int len = strlen(str) + strlen(rhs.str);temp.str = new char[len + 1];strcpy(temp.str , str);strcat(temp.str , rhs.str);return temp;

}

int main( ){MyString firstname = “MOHAMMED”;MyString lastname = “SIKANDER”;MyString fullname = firstname +lastname;firstname.display( ) ;lastname.display( ) ;fullname.display( );}

class MyString{

char *str;public : //relevent constructors are provided

void display( ){ cout << str << endl; }MyString operator +(const MyString &rhs) const

};

Mohammed Sikander www.cranessoftware.com

class MyString{

char *str;public : //Assume require constructors are presentbool operator >(const MyString &rhs){ return strcmp(str , rhs.str) > 0 ? true : false; }bool operator >=(const MyString &rhs){ return strcmp(str , rhs.str) >= 0 ? true : false; }bool operator <(const MyString &rhs){ return strcmp(str , rhs.str) < 0 ? true : false; }bool operator <=(const MyString &rhs){ return strcmp(str , rhs.str) <= 0 ? true : false; }bool operator ==(const MyString &rhs){ return strcmp(str , rhs.str) == 0 ? true : false; }bool operator !=(const MyString &rhs){ return strcmp(str , rhs.str) != 0 ? true : false; }};

int main( ){

MyString s1 = “BANGALORE”;MyString s2= “DELHI”;MyString s3 = “BANGALORE”;cout << (s1 > s2 ? S1 : s2);

if(s1 == s3) cout << “EQUAL”;

elsecout<<“NOT EQUAL”

}

Mohammed Sikander www.cranessoftware.com

class MyString{

char *str;public : MyString( )

{ str = NULL; }MyString(const char *ptr){

int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}};

int main( ){

MyString s1 = "SIKANDER";return 0;

}

Run valgrind and detect memory leakage.$valgrind ./a.out

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public : MyString( )

{ str = NULL; }MyString(const char *ptr){

int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ){

delete [ ] str;}

};int main( ){

MyString s1 = "SIKANDER";return 0;

}

Run valgrind and detect memory leakage.$valgrind ./a.out

Mohammed Sikander www.cranessoftware.com

class MyString{

char *str;public :

MyString(char *ptr){

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ){

cout <<“Destructor ” << str;delete [ ] str;

}};

int main( ){

MyString s1 = “SIKANDER”;

MyString s2 = s1;}

Mohammed Sikander www.cranessoftware.com

class MyString{

char *str;public :

MyString(const char *ptr){

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}

MyString(const MyString &old){cout <<“Copy Constructor”;str = new char[strlen(old.str) + 1];strcpy(str , old.str);

}~MyString( )

{cout <<“Destructor \n”;delete [ ] str;

}};

int main( ){

MyString s1 = “SIKANDER”;

MyString s2 = s1;}

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public :

MyString( ){ cout <<“Default Constructor \n”;

str = NULL; } MyString(const char *ptr) {

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ) {

cout <<“Destructor \n”;delete [ ] str;

}

int main( ){

MyString s1 = “SIKANDER”;MyString s2;s2 = s1;

}

MyString(const MyString &old){cout <<“Copy Constructor”;str = new char[strlen(old.str) + 1;strcpy(str , old.str);

}};

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public :

MyString( ){ cout <<“Default Constructor \n”;

str = NULL; } MyString(const char *ptr) {

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ) {

cout <<“Destructor \n”;delete [ ] str;

}MyString(const MyString &old){

cout <<“Copy Constructor”;str = new char[strlen(old.str) + 1;strcpy(str , old.str);

}

int main( ){

MyString s1 = “SIKANDER”;MyString s2;s2 = s1;

}

MyString &operator = (const MyString &rhs){ cout <<“Assignment \n”;

int len = strlen(rhs.str);str = new char[len + 1];strcpy(str , rhs.str);return *this;

}};

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public :

MyString( ){ cout <<“Default Constructor \n”;

str = NULL; } MyString(const char *ptr) {

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ) {

cout <<“Destructor \n”;delete [ ] str;

}MyString(const MyString &old){

cout <<“Copy Constructor”;str = new char[strlen(old.str) + 1;strcpy(str , old.str);

}

int main( ){

MyString s1 = “SIKANDER”;MyString s2 = “CHETHAN”;s2 = s1;

}

MyString &operator = (const MyString &rhs){ cout <<“Assignment \n”;

int len = strlen(rhs.str);str = new char[len + 1];strcpy(str , rhs.str);return *this;

}};

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public :

MyString( ){ cout <<“Default Constructor \n”;

str = NULL; } MyString(const char *ptr) {

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ) {

cout <<“Destructor \n”;delete [ ] str;

}MyString(const MyString &old){

cout <<“Copy Constructor”;str = new char[strlen(old.str) + 1;strcpy(str , old.str);

}

int main( ){

MyString s1 = “SIKANDER”;MyString s2 = “CHETHAN”;s2 = s1;

}

MyString & operator = (const MyString &rhs){

this->~MyString();int len = strlen(rhs.str);str = new char[len + 1];strcpy(str , rhs.str);return *this;

}};

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public :

MyString( ){ cout <<“Default Constructor \n”;

str = NULL; } MyString(const char *ptr) {

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ) {

cout <<“Destructor \n”;delete [ ] str;

}MyString(const MyString &old){

cout <<“Copy Constructor”;str = new char[strlen(old.str) + 1;strcpy(str , old.str);

}

int main( ){

MyString s1 = “SIKANDER”;MyString s2 = “CHETHAN”;s2 = s2;

}

MyString & operator = (const MyString &rhs){

this->~MyString();int len = strlen(rhs.str);str = new char[len + 1];strcpy(str , rhs.str);return *this;

}};

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public :

MyString( ){ cout <<“Default Constructor \n”;

str = NULL; } MyString(const char *ptr) {

cout <<“Constructor \n”;int len = strlen(ptr);str = new char[len + 1];strcpy(str , ptr);

}~MyString( ) {

cout <<“Destructor \n”;delete [ ] str;

}MyString(const MyString &old){

cout <<“Copy Constructor”;str = new char[strlen(old.str) + 1;strcpy(str , old.str);

}

int main( ){

MyString s1 = “SIKANDER”;MyString s2 = “CHETHAN”;s2 = s2;

}

MyString & operator = (const MyString &rhs){

if(this != &rhs){

this->~MyString();int len = strlen(rhs.str);str = new char[len + 1];strcpy(str , rhs.str);

}return *this;

}};

Mohammed Sikander www.cranessoftware.com

class MyString{ char *str;public :

MyString( );MyString(const char *ptr);~MyString( );MyString(const MyString &old);

friend ostream &operator << (ostream & , const MyString &);friend istream &operator >> (istream & , MyString &);};

int main( ){

MyString s1;MyString s2;cout <<“Enter the string : “;cin >> s1;cout << s1<< endl;

}ostream &operator << (ostream &out, const MyString &s){

out << s.str ;return out;

}istream &operator >> (istream &in, MyString &s){

char buffer[1024];in >> buffer;str = new char[strlen(buffer) + 1];strcpy(str , buffer);

}

Mohammed Sikander www.cranessoftware.com

For feedback and suggestions. Mail me at

[email protected];