00001 00002 #ifndef __STRING_A_HPP__ 00003 #define __STRING_A_HPP__ 00004 00005 #include <string> 00006 00007 using namespace std; 00008 00010 00014 class stringA 00015 { 00016 private: 00017 string* str; 00018 unsigned long len; 00019 00020 public: 00022 00023 stringA(void) : str(), len(0) {} 00024 00026 ~stringA(void) { delete str; } 00027 00029 stringA(const stringA& src) : str(), len(0) { operator=(src); } 00030 00032 const stringA& operator= (const stringA& src) 00033 { 00034 if(len != src.len) 00035 { 00036 if(str) 00037 delete str; 00038 00039 str = new string[src.len]; 00040 } 00041 00042 for(unsigned long i = 0; i < src.len; ++ i) 00043 str[i] = src.str[i]; 00044 00045 return *this; 00046 } 00047 00049 string& operator[](unsigned long i) { return str[i]; } 00050 00052 unsigned long size(void) const { return len; } 00053 00055 void addString(const string& s) 00056 { 00057 string* newStr = new string[len + 1]; 00058 00059 for(unsigned short i = 0; i < len; ++ i) 00060 newStr[i] = str[i]; 00061 00062 newStr[len] = s; 00063 00064 ++ len; 00065 00066 delete str; 00067 00068 str = newStr; 00069 } 00070 }; 00071 00073 string trim(const string& src); 00074 00076 stringA explode(const string& cut, string data); 00077 00078 string operator+(const string& str, const long i); 00079 string operator+(const long i, const string& str); 00080 00082 string ltos(long i); 00083 00085 string space(unsigned long nb); 00086 00088 string replace(const string& str, const string& motif, const string& newMotif); 00089 00090 #endif // __STRING_A_HPP__