00001 00002 00003 #ifndef STRING_H 00004 #define STRING_H 00005 00006 00007 #include <string> 00008 #include <sstream> 00009 00010 00011 namespace pge { 00012 00013 00014 class String { 00015 00016 00017 public: 00018 //************************************************************************ 00019 // 00020 // Constructor 00021 // 00022 //************************************************************************ 00024 String(void) { 00025 m_string = ""; 00026 } 00027 00028 String(const String ©) { 00029 m_string = copy.m_string; 00030 } 00031 00032 String(const std::string &str) { 00033 append(str); 00034 } 00035 00036 String(char *str) { 00037 append(str); 00038 } 00039 00040 String(char c) { 00041 append(c); 00042 } 00043 00044 String(int i) { 00045 append(i); 00046 } 00047 00048 String(float f) { 00049 append(f); 00050 } 00051 00052 String(double d) { 00053 append(d); 00054 } 00055 00056 00057 //************************************************************************ 00058 // 00059 // Destructor 00060 // 00061 //************************************************************************ 00063 virtual ~String(void) { 00064 } 00065 00066 00067 //************************************************************************ 00068 // 00069 // Functions 00070 // 00071 //************************************************************************ 00072 std::string getString(void) { 00073 return m_string; 00074 } 00075 00076 const char* getCString(void) { 00077 return m_string.c_str(); 00078 } 00079 00080 void append(const String &str) { 00081 m_string.append(str.m_string); 00082 } 00083 00084 void append(const std::string &str) { 00085 m_string.append(str); 00086 } 00087 00088 void append(char *str) { 00089 m_string.append(std::string(str)); 00090 } 00091 00092 void append(char c) { 00093 std::stringstream str; 00094 00095 str << c; 00096 str >> m_string; 00097 } 00098 00099 void append(int i) { 00100 std::stringstream str; 00101 00102 str << i; 00103 str >> m_string; 00104 } 00105 00106 String append(float f) { 00107 std::stringstream str; 00108 00109 str << f; 00110 str >> m_string; 00111 return String(m_string); 00112 } 00113 00114 String append(double d) { 00115 std::stringstream str; 00116 00117 str << d; 00118 str >> m_string; 00119 return m_string; 00120 } 00121 00122 String operator+(const String &str) { 00123 append(str); 00124 return String(m_string); 00125 } 00126 00127 00128 private: 00129 //************************************************************************ 00130 // 00131 // Variables 00132 // 00133 //************************************************************************ 00134 std::string m_string; 00135 }; 00136 }; 00137 00138 #endif