// // STRING2.CPP // // coded by : Demiurg-HG // descr : string definition, fully independent of system, core etc. // #include #include #include #include #include "string2.h" /* ** Contrustors & Destructor */ EStr::EStr(void) { length = 0; string = new char[length+1]; string[0] = '\0'; } EStr::EStr(const char *s) { length = (int)strlen(s); string = new char[length+1]; strcpy(string, s); } EStr::EStr(const EStr &s) { if (this==&s){} length = s.length; string = new char[length+1]; strcpy(string, s.string); } EStr::~EStr(void) { delete[] string; length = -1; } void EStr::Set(const char *s) { delete[] string; length = (int)strlen(s); string = new char[length+4]; strcpy(string, s); } void EStr::Set(const EStr &s) { Set(s.c_str()); } void EStr::Copy(const char *beg, int len) { delete[] string; if (len<0) len = 0; length = len; string = new char[length+1]; memset(string, 0, len+1); strncpy(string, beg, len); } const char *EStr::c_str(void) const { return &string[0]; } const char *EStr::c_strn(int n) const { if (n<0 || n>length) return ""; else return &string[n]; } char EStr::getch(int n) const { if (n<0 || n>=length) return '\0'; else return string[n]; } int EStr::getlen(void) const { return length; } EStr &EStr::Lower(void) { for (char *scan = &string[0]; *scan; scan++) *scan = tolower(*scan); return *this; } EStr &EStr::Upper(void) { for (char *scan = &string[0]; *scan; scan++) *scan = toupper(*scan); return *this; } void EStr::va(const char *frmt, ...) { char bigstr[16384]; va_list argptr; int len; va_start (argptr, frmt); len = vsprintf (bigstr, frmt, argptr); va_end (argptr); delete[] string; length = len; string = new char[length+1]; strcpy(string, bigstr); } int EStr::FindChar(const char ch) const { for (int i=0; i> 2)); return (hash & 0x7FFFFFFF); }