Click to go home

// class String implementation

#include < usual.h>
#include "String.hpp"

String::String()   // default constructor
{
	if((str=new char[1])!=NULL)
		str[0]='\0';
	else{
		cout<<"No memory available!";exit(1); }
	length=0;
}

String::String(char ch)  // constructor accepting char
{
	if((str=new char[2])!=NULL){
		str[0]=ch;
		str[1]='\0';}
	else{
		cout<<"No memory available!";exit(1); }
	length=1;
}

String::String(char* strng)  // constructor accepting char string
{
	length=strlen(strng);
	if((str=new char[length+1])!=NULL)
		strcpy(str,strng);
	else{
		cout<<"No memory available!";exit(1); }
}

String::String(const String& obj) // constructor accepting String object
{
	length=strlen(obj.str);
	if((str=new char[length+1])!=NULL)
		strcpy(str,obj.str);
	else{
		cout<<"No memory available!";exit(1);	}
}

String::~String()  // destructor
{
	delete[]str;
}

int String::getLength()  // returns length
{
	return length;
}

char* String::getString()  // returns char string
{
	return str;
}

String String::operator =(const String& obj) // operator= overload
{                                          // with another String object
	delete []str;
	length=strlen(obj.str);
	if((str=new char[length+1])!=NULL)
		strcpy(str,obj.str);
	else{
		cout<<"No memory available!";exit(1); }
	return obj;
}

String String::operator =(char* strng)  // operator= overload
{                                       // with char string
	String temp(strng);
	*this=temp;
	return *this;
}

String String::operator =(char ch)   // operator= overload with char
{
	delete[]str;
	if((str=new char[2])!=NULL){
		str[0]=ch;
		str[1]='\0';}
	else{
		cout<<"No memory available!";exit(1); }
	length=1;
	return *this;
}

String String::operator +(const String& obj)  // operator+ with another
{                                             // String object
	String temp(obj);
	temp.length+=length;
	delete []temp.str;
	if((temp.str=new char[temp.length+1])!=NULL){
		strcpy(temp.str,str);
		strcat(temp.str,obj.str);}
	else{
		cout<<"No memory available!";exit(1); }

	return temp;
}

String String::operator +(char *strng)  // operator+ with char string
{
	String temp(strng);
	temp=temp+*this;
	return temp;
}

String String::operator +(char ch)  // operator+ with char
{
	String temp(ch);
	temp=temp+*this;
	return temp;
}

ostream& operator<<(ostream& out,String& obj)  // operator<< overload
{                                              // friend function
	out<< obj.getString();
	return out;
}

void String::printString()  // prints str and length to standard out
{
	cout<<"str: "<< str<<" length: "<< length<< endl;
}

Next Page - Student.cpp

Jump to:
hpp  |   Employee.cpp  |   FullTime.cpp  |   SalesPerson.cpp  |   Driver

Go to top