00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #ifndef ZenLib_ZtringH
00047 #define ZenLib_ZtringH
00048
00049
00050
00051 #include <string>
00052 #include <ZenLib/Conf.h>
00053
00054
00055
00056 #ifdef __BORLANDC__
00057 #pragma warn -8027
00058 #endif
00059
00060
00061
00062 namespace ZenLib
00063 {
00064
00065
00066 typedef std::basic_string<Char, std::char_traits<Char>, std::allocator<Char> > tstring;
00067
00068
00069
00070
00071 enum ztring_t
00072 {
00073 Ztring_Nothing,
00074 Ztring_Rounded = 1,
00075 Ztring_CaseSensitive = 2,
00076 Ztring_AddLastItem = 4,
00077 Ztring_Recursive = 8,
00078 Ztring_NoZero =16
00079 };
00080
00081
00082
00083
00084
00085 //***************************************************************************
00086
00087 class Ztring : public tstring
00088 {
00089 public :
00090
00091 Ztring () : tstring(){};
00092 Ztring (const tstring& s, size_type pos=0, size_type n=npos) : tstring(s.c_str(), pos, npos){};
00093 Ztring (const tstring* s, size_type pos=0, size_type n=npos) : tstring(s->c_str(), pos, npos){};
00094 Ztring (const Char *s) : tstring(s){};
00095 Ztring (const Char *s, size_type n) : tstring(s, n){};
00096 Ztring (size_type n, const Char s) : tstring(n, s){};
00097
00098
00099 Char &operator () (size_t Pos);
00100
00101
00102
00103 Ztring& From_Unicode(const std::wstring &S) {return From_Unicode(S.c_str());};
00104
00105 Ztring& From_Unicode(const wchar_t *s);
00106
00107 Ztring& From_Unicode(const wchar_t *s, size_t Length);
00108
00109 Ztring& From_UTF8 (const std::string &S) {return From_UTF8(S.c_str());};
00110
00111 Ztring& From_UTF8 (const char *s);
00112
00113 Ztring& From_UTF8 (const char *s, size_t Length);
00114
00115 Ztring& From_Local (const std::string &S) {return From_Local(S.c_str());};
00116
00117 Ztring& From_Local (const char *s);
00118
00119 Ztring& From_Local (const char *s, size_t Length);
00120 Ztring& From_Number (const int8s, intu Radix=10);
00121 Ztring& From_Number (const int8u, intu Radix=10);
00122 Ztring& From_Number (const int16s, intu Radix=10);
00123 Ztring& From_Number (const int16u, intu Radix=10);
00124 Ztring& From_Number (const int32s, intu Radix=10);
00125 Ztring& From_Number (const int32u, intu Radix=10);
00126 #if (MAXTYPE_INT>=64)
00127 Ztring& From_Number (const int64s, intu Radix=10);
00128 Ztring& From_Number (const int64u, intu Radix=10);
00129 #endif
00130 Ztring& From_Number (const float32, intu AfterComma=3, ztring_t Options=Ztring_Nothing);
00131 Ztring& From_Number (const float64, intu AfterComma=3, ztring_t Options=Ztring_Nothing);
00132 Ztring& From_Number (const float128, intu AfterComma=3, ztring_t Options=Ztring_Nothing);
00133 std::wstring To_Unicode ();
00134
00135
00136 std::string To_UTF8 ();
00137
00138
00139 std::string To_Local ();
00140
00141
00142
00143 int32s To_int32s(ztring_t Options=Ztring_Rounded) const;
00144
00145
00146
00147 int32u To_int32u(ztring_t Options=Ztring_Rounded) const;
00148 #if (MAXTYPE_INT>=64)
00149
00150
00151
00152 int64s To_int64s(ztring_t Options=Ztring_Rounded) const;
00153
00154
00155
00156 int64u To_int64u(ztring_t Options=Ztring_Rounded) const;
00157 #endif
00158
00159
00160
00161 float32 To_float32 (ztring_t Options=Ztring_Nothing) const;
00162 float64 To_float64 (ztring_t Options=Ztring_Nothing) const;
00163 float128 To_float128(ztring_t Options=Ztring_Nothing) const;
00164
00165 static Ztring ToZtring (const int8s I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00166 static Ztring ToZtring (const int8u I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00167 static Ztring ToZtring (const int16s I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00168 static Ztring ToZtring (const int16u I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00169 static Ztring ToZtring (const int32s I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00170 static Ztring ToZtring (const int32u I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00171 #if (MAXTYPE_INT>=64)
00172 static Ztring ToZtring (const int64s I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00173 static Ztring ToZtring (const int64u I, intu Radix=10) {return Ztring().From_Number(I, Radix);};
00174 #endif
00175 static Ztring ToZtring (const float32 F, intu AfterComma=3) {return Ztring().From_Number(F, AfterComma);};
00176 static Ztring ToZtring (const float64 F, intu AfterComma=3) {return Ztring().From_Number(F, AfterComma);};
00177 static Ztring ToZtring (const float128 F, intu AfterComma=3) {return Ztring().From_Number(F, AfterComma);};
00178
00179
00180
00181 Ztring* MakeLowerCase();
00182
00183 Ztring* MakeUpperCase();
00184
00185 Ztring* TrimLeft(Char ToTrim=_T(' '));
00186
00187 Ztring* TrimRight(Char ToTrim=_T(' '));
00188
00189 Ztring* Trim(Char ToTrim=_T(' '));
00190
00191 Ztring* Quote(Char ToTrim=_T('\"'));
00192
00193
00194
00195
00196
00197
00198
00199
00200 Ztring SubString (const tstring &Begin, const tstring &End, size_type Pos=0, ztring_t Options=Ztring_Nothing) const;
00201
00202
00203
00204
00205
00206
00207
00208 size_t FindAndReplace (const tstring &ToFind, const tstring &ReplaceBy, size_type Pos=0, ztring_t Options=Ztring_Nothing); //Remplace une chaine par une autre
00209
00210
00211
00212
00213
00214
00215
00216 size_t Count (const Ztring &ToCount, ztring_t Options=Ztring_Nothing) const;
00217
00218
00219
00220
00221
00222 bool Compare (const Ztring &ToCompare, const Ztring &Comparator, ztring_t Options=Ztring_Nothing) const;
00223 };
00224
00225 }
00226
00227
00228 #ifdef __BORLANDC__
00229 #pragma warn .8027
00230 #endif
00231
00232
00233 #endif
00234
00235