// mstring.cpp: implementation of the mstring class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "mstring.h" #include #include #include ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// mstring::mstring(void) { data[0]=0; //done_memory=false; } mstring::mstring(char* a) { this->set_memory(strlen(a)); sprintf(data,"%s",a); } mstring::~mstring(void) { remove_memory(); } mstring mstring::operator+( mstring a) { mstring b; b.set_memory(this->length()+a.length()); sprintf(b.data,"%s%s",data,a.data); return b; } mstring mstring::operator+(char * a) { mstring b; b.set_memory(this->length()+strlen(a)); sprintf(b.data,"%s%s",data,a); return b; } mstring mstring::operator=( mstring a) { this->set_memory(strlen(a.data)); sprintf(data,"%s",a.data); return a; } mstring mstring::operator=(char * a) { this->set_memory(strlen(a)); //data=new char[strlen(a)]; sprintf(data,"%s",a); return *this; } mstring mstring::mid( int a,int b) { mstring ts(""); if(a<0||b>length()||a>b) return ts; int i; for(i=a;ilength()||a>b) return ts; int i; for(i=0;ilength()!=a.length()) return false; int i; for(i=0;ilength();i++){ if(this->data[i]!=a.data[i]) return false; } return true; } bool mstring::operator==(char * a) { if(this->length()!=strlen(a)) return false; int i; for(i=0;ilength();i++){ if(this->data[i]!=a[i]) return false; } return true; } int mstring::operator[]( mstring a) { if(this->length()length()==0) return -1; int i; for(i=0;i<=this->length()-a.length();i++){ if(mid(i,i+a.length())==a) return i; } return -1; } int mstring::operator[](char * a) { if(this->length()length()==0) return -1; int i; for(i=0;i<=this->length()-strlen(a);i++){ if(mid(i,i+strlen(a))==a) return i; } return -1; } void mstring::set_memory(int a) { //if(done_memory){delete []data;} //if(a>2000); //data=new char[a]; // done_memory=true; } void mstring::remove_memory() { //if(done_memory){delete [] this->data;} } int mstring::length() { return strlen(data); }