00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "String.h"
00012
00013 String::String()
00014 {
00015 Size = 0;
00016 Data = NULL;
00017 }
00018
00019 String::~String()
00020 {
00021 if(Data)
00022 delete Data;
00023 }
00024
00025 int String::size()
00026 {
00027 return Size;
00028 }
00029
00030 String String::operator+(const String a)
00031 {
00032 String out;
00033 char *Temp;
00034
00035 out.Size = Size + a.Size;
00036
00037 Temp = new char[out.Size + 1];
00038 strncpy(Temp, Data, Size);
00039 strncat(Temp, a.Data, a.Size);
00040
00041 out.Data = Temp;
00042
00043 return out;
00044 }
00045
00046 String String::operator+(const char *a)
00047 {
00048 String out;
00049 char *Temp;
00050
00051 out.Size = Size + strlen(a);
00052
00053 Temp = new char[out.Size + 1];
00054 strncpy(Temp, Data, Size);
00055 strncat(Temp, a, strlen(a));
00056
00057 out.Data = Temp;
00058
00059 return out;
00060 }
00061
00062 String String::operator+(const char a)
00063 {
00064 String out;
00065 char *Temp;
00066
00067 out.Size = Size + 1;
00068
00069 Temp = new char[out.Size + 1];
00070 strncpy(Temp, Data, Size);
00071 Temp[Size] = a;
00072 Temp[out.Size] = '\0';
00073
00074 out.Data = Temp;
00075
00076 return out;
00077 }
00078
00079 void String::operator=(const String a)
00080 {
00081 Size = a.Size;
00082 delete Data;
00083 Data = new char[Size + 1];
00084 strncpy(Data, a.Data, Size);
00085 }
00086
00087 void String::operator=(const char *a)
00088 {
00089 Size = strlen(a);
00090 delete Data;
00091 Data = new char[Size + 1];
00092 strncpy(Data, a, Size);
00093 }
00094
00095 void String::operator+=(const String a)
00096 {
00097 Size += a.Size;
00098 Data = (char *)realloc(Data, sizeof(char) * (Size + 1));
00099 strncat(Data, a.Data, a.Size);
00100 }
00101
00102 void String::operator+=(const char *a)
00103 {
00104 Size += strlen(a);
00105 Data = (char *)realloc(Data, sizeof(char) * (Size + 1));
00106 strncat(Data, a, strlen(a));
00107 }
00108
00109 void String::operator+=(const char a)
00110 {
00111 Size += 1;
00112 Data = (char *)realloc(Data, sizeof(char) * (Size + 1));
00113 Data[Size - 1] = a;
00114 Data[Size] = '\0';
00115 }
00116
00117 bool String::operator==(const String a)
00118 {
00119 if((!strcmp(Data, a.Data)) && (Size == a.Size))
00120 return 1;
00121
00122 return 0;
00123 }
00124
00125 bool String::operator==(const char *a)
00126 {
00127 if(!strcmp(Data, a))
00128 return 1;
00129
00130 return 0;
00131 }
00132
00133 bool String::operator!=(const String a)
00134 {
00135 if(strcmp(Data, a.Data))
00136 return 1;
00137
00138 return 0;
00139 }
00140
00141 bool String::operator!=(const char *a)
00142 {
00143 if(strcmp(Data, a))
00144 return 1;
00145
00146 return 0;
00147 }
00148