00001
00002 #include "ascstring.h"
00003
00036 ASCString& ASCString::toLower ( )
00037 {
00038
00039
00040 charT* l_pBuf = new charT [ length () + sizeof ( charT ) ];
00041
00042 ASCStringHelpers::_Strcpy ( l_pBuf, c_str () );
00043 ASCStringHelpers::_Strlwr ( l_pBuf );
00044 assign ( l_pBuf );
00045
00046 delete[] l_pBuf;
00047 return *this;
00048 }
00049
00055 ASCString& ASCString::toUpper ( )
00056 {
00057
00058 charT* l_pBuf = new charT [ length () + sizeof ( charT ) ];
00059
00060 ASCStringHelpers::_Strcpy ( l_pBuf, c_str () );
00061 ASCStringHelpers::_Strupr ( l_pBuf );
00062 assign ( l_pBuf );
00063
00064 delete[] l_pBuf;
00065 return *this;
00066 }
00067
00078 ASCString& ASCString::format ( const charT* pFormat, ... )
00079 {
00080 std::va_list arg_ptr;
00081 va_start ( arg_ptr, pFormat );
00082
00083 vaformat( pFormat, arg_ptr );
00084
00085 va_end ( arg_ptr );
00086
00087 return *this;
00088 }
00089
00090
00091 ASCString& ASCString::vaformat ( const charT* pFormat, va_list ap )
00092 {
00093 int l_iNbChar = 10000;
00094 bool l_bIsDone = false;
00095
00096 while ( l_bIsDone == false )
00097 {
00098 charT* l_pBuf = new charT [ l_iNbChar ];
00099
00100 int l_iNbCharWritten = ASCStringHelpers::_Vsnprintf ( l_pBuf, l_iNbChar, pFormat, ap );
00101
00102 if ( l_iNbCharWritten != -1 )
00103 {
00104
00105 assign ( l_pBuf );
00106 l_bIsDone = true;
00107 }
00108 else
00109 {
00110
00111
00112
00113 l_iNbChar *= 2;
00114 }
00115
00116 delete [] l_pBuf;
00117 };
00118 return *this;
00119 }
00120
00121
00137 void ASCString::printf ( )
00138 {
00139 ASCStringHelpers::_Printf ( c_str () );
00140 }
00141
00142
00146 bool ASCString::endswith( const ASCString& s ) const
00147 {
00148 size_type p = rfind( s );
00149 if ( p != npos )
00150 return p == length() - s.length();
00151 else
00152 return false;
00153 }
00154
00155
00156
00167 ASCString copytoLower ( const ASCString& String )
00168 {
00169 ASCString l_TempString ( String );
00170 l_TempString.toLower ();
00171
00172 return l_TempString;
00173 }
00174
00185 ASCString copytoUpper ( const ASCString& String )
00186 {
00187 ASCString l_TempString ( String );
00188 l_TempString.toUpper ();
00189
00190 return l_TempString;
00191 }
00192
00193 ASCString ASCString::toString(int i )
00194 {
00195 ASCString s;
00196 s.format("%d",i);
00197 return s;
00198 }
00199
00200 #ifdef SIZE_T_not_identical_to_INT
00201 ASCString ASCString::toString( size_t i )
00202 {
00203 ASCString s;
00204 s.format("%d",i);
00205 return s;
00206 }
00207 #endif
00208
00209
00210 ASCString ASCString::toString(double d )
00211 {
00212 ASCString s;
00213 s.format("%f",d);
00214 return s;
00215 }
00216
00217 const ASCString operator+ ( const ASCString& s1, const ASCString& s2 )
00218 {
00219 ASCString s = s1;
00220 s += s2;
00221 return s;
00222 }
00223
00224 const ASCString operator+ ( const char* s1, const ASCString& s2 )
00225 {
00226 ASCString s = s1;
00227 s += s2;
00228 return s;
00229 }
00230
00231 ASCString& ASCString::replaceAll( const ASCString& old, const ASCString& newString)
00232 {
00233 ASCString::size_type it;
00234 while ( (it = find(old)) != ASCString::npos)
00235 replace( it, old.length(), newString);
00236
00237 return *this;
00238 }
00239
00240 ASCString& ASCString::replaceAll_ci( const ASCString& old, const ASCString& newString)
00241 {
00242 ASCString::size_type it ;
00243 ASCString old2 = copytoLower(old);
00244 do {
00245 ASCString tmp = copytoLower( *this );
00246
00247 it = tmp.find( old2 );
00248 if ( it != npos )
00249 replace( it, old.length(), newString);
00250
00251 } while ( it != npos);
00252
00253 return *this;
00254 }
00255
00256