00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "../string/string.h"
00036
00037 String::String( const char* str) {
00038
00039 if( !str) str = "";
00040 _str = new char[strlen( str)+1];
00041 strcpy( _str, str);
00042 }
00043
00044 String::String( const String& s) {
00045
00046 _str = new char[s.length()+1];
00047 strcpy( _str, s);
00048 }
00049
00050 String::~String() {
00051
00052 delete[] _str;
00053 }
00054
00055 String String::operator=( const char* s) {
00056
00057 if( s != _str) {
00058
00059 delete[] _str;
00060 if( !s) s = "";
00061 _str = new char[strlen( s)+1];
00062 strcpy( _str, s);
00063 }
00064
00065 return String( _str);
00066 }
00067
00068 String String::operator+=( const char* s) {
00069
00070 if( !s) s = "";
00071
00072 char* old = _str;
00073 _str = new char[strlen( _str)+strlen( s)+1];
00074 strcpy( _str, old);
00075 strcat( _str, s);
00076 delete[] old;
00077
00078 return String( _str);
00079 }
00080
00081 String String::cutRight() {
00082
00083 int len = strlen( _str);
00084 char* p = _str+len-1;
00085
00086 while( len) {
00087
00088 if( *p == ' ' || *p == '\t') {
00089
00090 *p = 0;
00091 len--;
00092 p--;
00093 }
00094 else break;
00095 }
00096
00097 return (*this);
00098 }
00099
00100 String String::cutLeft() {
00101
00102 char* p = _str;
00103 while( *p) {
00104
00105 if( *p == ' ' || *p == '\t') p++;
00106 else break;
00107 }
00108
00109 memmove( _str, p, strlen( p)+1);
00110
00111 return (*this);
00112 }