Implementing string
-
Upload
mohamed-sikander -
Category
Software
-
view
216 -
download
0
Transcript of Implementing string
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