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