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 #ifndef _MPCL_TEXT_STRING__
00027 #define _MPCL_TEXT_STRING__
00028
00029 #include <algorithm>
00030 #include "basic_string.hh"
00031
00032
00034 namespace mpcl
00035 {
00036
00038 namespace text
00039 {
00040
00041
00042
00043
00044
00046 typedef TBasicString<char> TString;
00047
00048
00049
00050
00051
00052
00060 const char* BoolToString ( bool gTRUTH ,
00061 const char* pkcTRUE = "true" ,
00062 const char* pkcFALSE = "false" );
00063
00072 TString Format (const char* pkcFORMAT...);
00073
00081 template <typename TChar, typename TTraits, typename TAllocator>
00082 inline TBasicString<TChar, TTraits, TAllocator>
00083 Lowercase (const std::basic_string<TChar, TTraits, TAllocator>& rkySOURCE)
00084 {
00085
00086 TBasicString<TChar, TTraits, TAllocator> yTarget = rkySOURCE;
00087
00088 std::transform (yTarget.begin(), yTarget.end(), yTarget.begin(), tolower);
00089 return yTarget;
00090
00091 }
00092
00100 template <typename TChar, typename TTraits, typename TAllocator>
00101 inline TBasicString<TChar, TTraits, TAllocator>
00102 Uppercase (const std::basic_string<TChar, TTraits, TAllocator>& rkySOURCE)
00103 {
00104
00105 TBasicString<TChar, TTraits, TAllocator> yTarget = rkySOURCE;
00106
00107 std::transform (yTarget.begin(), yTarget.end(), yTarget.begin(), toupper);
00108 return yTarget;
00109
00110 }
00111
00118 template <typename TInputIter, typename TChar, typename TOutputIter>
00119 inline TOutputIter Split ( TInputIter tBEGIN_ITER ,
00120 TInputIter tEND_ITER ,
00121 TChar tSEPARATOR ,
00122 TOutputIter tTARGET_ITER )
00123 {
00124
00125 TInputIter tSeparatorIter;
00126 TString ySubstring;
00127
00128 while ( tEND_ITER != (tSeparatorIter = std::find (tBEGIN_ITER, tEND_ITER, tSEPARATOR)) )
00129 {
00130 ySubstring = TString (tBEGIN_ITER, tSeparatorIter);
00131 if ( ySubstring.length() )
00132 {
00133 *tTARGET_ITER = ySubstring;
00134 ++tTARGET_ITER;
00135 }
00136 tBEGIN_ITER = tSeparatorIter + 1;
00137 }
00138
00139
00140
00141
00142 if ( tBEGIN_ITER != tEND_ITER )
00143 {
00144 ySubstring = TString (tBEGIN_ITER, tEND_ITER);
00145 *tTARGET_ITER = ySubstring;
00146 }
00147 return tTARGET_ITER;
00148
00149 }
00150
00151 }
00152
00153 }
00154
00155
00156 #endif // not _MPCL_TEXT_STRING__