00001
00002
00003
00004 #include <OMISC.H>
00005 #include <CTYPE.H>
00006 #include <OSTR.H>
00007
00008
00009
00010 static char work_buf[MAX_STR_LEN+1];
00011
00012
00013
00014 String::String() {
00015 str_buf[0] = NULL;
00016 }
00017
00018 String::String( char *s ) {
00019 strncpy(str_buf, s, MAX_STR_LEN );
00020 str_buf[MAX_STR_LEN] = NULL;
00021 }
00022
00023 String::String( String& s ) {
00024 memcpy(str_buf, s.str_buf, MAX_STR_LEN+1 );
00025 }
00026
00027
00028
00029
00036
00037 work_buf[0] = NULL;
00038
00039 int strLen = strlen(str_buf);
00040
00041 if(pos >= strLen)
00042 return work_buf;
00043
00044 if( len <= 0 )
00045 len = strLen - pos;
00046 else {
00047 if(len > strLen - pos)
00048 return work_buf;
00049 }
00050
00051 strncpy( work_buf, str_buf+pos, len );
00052 work_buf[len] = NULL;
00053
00054 return work_buf;
00055 }
00056
00057
00058
00059
00060
00061 char* String::upper() {
00062 memcpy( work_buf, str_buf, len()+1 );
00063 strupr( work_buf );
00064
00065 return work_buf;
00066 }
00067
00068 char* String::lower(void) {
00069 memcpy( work_buf, str_buf, len()+1 );
00070 strlwr( work_buf );
00071
00072 return work_buf;
00073 }
00074
00075
00076
00077
00084
00085 int pos;
00086 char *tmp;
00087
00088 if( (tmp = strstr(str_buf, searchStr)) != NULL)
00089 pos = (int)(tmp-str_buf);
00090 else
00091 pos = -1;
00092
00093 return pos;
00094 }
00095
00096
00097
00098
00099
00100 String& String::operator=(String& s) {
00101 memcpy(str_buf, s.str_buf, MAX_STR_LEN+1 );
00102
00103 return *this;
00104 }
00105
00106 String& String::operator=(char *s) {
00107 strncpy(str_buf, s, MAX_STR_LEN );
00108 str_buf[MAX_STR_LEN] = NULL;
00109
00110 return *this;
00111 }
00112
00113 String& String::operator=(long value) {
00114 strncpy(str_buf, m.format(value), MAX_STR_LEN );
00115 str_buf[MAX_STR_LEN] = NULL;
00116
00117 return *this;
00118 }
00119
00120
00121
00122
00123
00124 String& String::operator+=(String& s) {
00125 strncat( str_buf, s.str_buf, MAX_STR_LEN );
00126 str_buf[MAX_STR_LEN] = NULL;
00127 return *this;
00128 }
00129
00130 String& String::operator+=(char *s) {
00131 strncat( str_buf, s, MAX_STR_LEN );
00132 str_buf[MAX_STR_LEN] = NULL;
00133 return *this;
00134 }
00135
00136 String& String::operator+=(long value) {
00137 strncat( str_buf, m.format(value), MAX_STR_LEN );
00138 str_buf[MAX_STR_LEN] = NULL;
00139 return *this;
00140 }
00141
00142
00143
00144
00145
00146 String& String::operator*=(int n) {
00147 memcpy( work_buf, str_buf, len()+1 );
00148
00149 for(int i=1; i<n; i++)
00150 strncat(str_buf, work_buf, MAX_STR_LEN);
00151
00152 str_buf[MAX_STR_LEN] = NULL;
00153
00154 return *this;
00155 }
00156
00157