www.pudn.com > Ftpwork > String.cpp


#include 
#include 
#include 
#include "./String.h"


String::String()
{
	_string = new char[0];
}

String::String(const char * string)
{
	_string = new char[strlen(string)+1];
	strcpy(_string, string);
}

int  String::toInt()
{
	return atoi(_string);
}

long String::toLong()
{
	return atol(_string);
}

double String::toDouble()
{
	return atof(_string);
}

const char String::operator[](const int index)
{
	return _string[index];
}

const char* String::buffer()
{
	return _string;
}

String& String::operator=(const String & str)
{
	if(this == &str)
		return *this;
	int length = strlen(str._string);
	
	if(_string != NULL)
		delete _string;
	
	_string =new char[ length+1];
	strcpy(_string, str._string);
	return *this;	
}

String& String::operator=(const char* str)
{
	int length =strlen(str)+1;
	if(_string != NULL )
		delete[] _string;
	_string =new char[ length];
	strcpy(_string, str);
	return *this;	
}

String& String::operator+(const String & str)
{
	
	int length =strlen(_string);
	char *temp = new char[length+1];
	temp = strcpy(temp, _string);
	
	delete _string;
	
	length +=strlen(str._string);
	
	_string = new char[ length +1];
	
	_string = strcpy(_string, temp);	
	_string = strcat(_string, str._string);
	return *this;	
}


String& String::operator+(const char* str)
{	
	int length =strlen(_string);
	char*  temp = new char[length+1];
	temp = strcpy(temp, _string);
	
	delete _string;
	
	length +=strlen(str);
	
	_string = new char[ length +1];
	
	_string = strcpy(_string, temp);	
	_string = strcat(_string, str);
	return *this;	
}

String& String::operator+=(const String & str)
{
	return *this+str;
}

String& String::operator+=(const char* str)
{
	return *this+str;
}

BOOL String::operator==(const String& str)
{
	if( this == &str)
		return TRUE;
	else
		if( strcmp(this->_string, str._string) ==0)
			return TRUE;
	return 	FALSE;
}

const int String::indexof(const char ch)
{
	for(unsigned int k=0;k_string, str);
	if(pchar == NULL)
		return -1;
	else
		return (pchar - _string);
}

const int String::indexof(const String& str)
{
	return indexof(str._string);
}

const char String::getAt(const int index)
{
	return _string[index];
}

const char String::putAt(const int index, const char ch)
{
	return _string[index]=ch;
}

String::~String()
{
	if(_string !=NULL)
		delete _string;
}