Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #pragma once
00019
00020 #ifndef __OpenKarto_String_h__
00021 #define __OpenKarto_String_h__
00022
00023 #include <stdio.h>
00024 #include <ostream>
00025 #include <sstream>
00026
00027 #include <OpenKarto/Macros.h>
00028 #include <OpenKarto/Types.h>
00029
00030 namespace karto
00031 {
00032
00034
00035
00039
00040 #ifdef _DEBUG
00041 struct StringPrivate
00042 {
00043 std::string m_String;
00044 };
00045 #else
00046 struct StringPrivate;
00047 #endif
00048
00052 class KARTO_EXPORT String
00053 {
00054 public:
00058 String();
00059
00064 String(char c);
00065
00070 String(const char* pString);
00071
00077 String(const char* pString, kt_int32u size);
00078
00082 String(const String& rOther);
00083
00087 virtual ~String();
00088
00089 public:
00094 void Append(const String& rString);
00095
00100 const char* ToCString() const;
00101
00106 kt_size_t Size() const;
00107
00111 void Clear();
00112
00118 String SubString(kt_size_t index) const;
00119
00126 String SubString(kt_size_t index, kt_size_t length) const;
00127
00133 kt_size_t Find(const String& rValue) const;
00134
00140 kt_size_t FindFirstOf(const String& rValue) const;
00141
00147 kt_size_t FindLastOf(const String& rValue) const;
00148
00153 static String NewLine();
00154
00160 void Erase(kt_size_t index, kt_size_t length);
00161
00162 public:
00168 int operator[](kt_int32u index) const;
00169
00173 String& operator=(const String& rOther);
00174
00178 kt_bool operator==(const String& rOther) const;
00179
00183 kt_bool operator!=(const String& rOther) const;
00184
00188 kt_bool operator<(const String& rOther) const;
00189
00193 kt_bool operator>(const String& rOther) const;
00194
00198 String operator+(const String& rOther);
00199
00203 String operator+(const char* pChar);
00204
00211 friend String operator+(const char* pChar, const String& rOther)
00212 {
00213 String string(pChar);
00214 string.Append(rOther);
00215 return string;
00216 }
00217
00224 friend String operator+(const String& rOther1, const String& rOther2)
00225 {
00226 String string;
00227 string.Append(rOther1);
00228 string.Append(rOther2);
00229 return string;
00230 }
00231
00235 friend KARTO_FORCEINLINE std::ostream& operator << (std::ostream& rStream, const String& rString)
00236 {
00237 rStream << rString.ToCString();
00238 return rStream;
00239 }
00240
00241 private:
00242 StringPrivate* m_pStringPrivate;
00243 };
00244
00246
00247 }
00248
00249 #endif // __OpenKarto_String_h__