//--------------------------------------------------------------------------- #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #ifdef MSVC #pragma warning (disable : 4530) #pragma warning (disable : 4786) #endif #include #include #include #include #include using namespace std; class String_Util { public: static string& LowerCase(string& str) { transform(str.begin(), str.end(), str.begin(), tolower); // return str; } static string& UpperCase(string& str) { transform(str.begin(), str.end(), str.begin(), toupper); // return str; } static string& LTrim(string& str) { string::size_type pos = str.find_first_not_of(' '); if(pos != string::npos) str.erase(0, pos); else str.erase(str.begin(), str.end()); return str; } static string& RTrim(string& str) { string::size_type pos = str.find_last_not_of(' '); if(pos != string::npos) str.erase(pos + 1); else str.erase(str.begin(), str.end()); return str; } static string& Trim(string& str) { string::size_type pos = str.find_last_not_of(' '); if(pos != string::npos) { str.erase(pos + 1); pos = str.find_first_not_of(' '); if(pos != string::npos) str.erase(0, pos); } else str.erase(str.begin(), str.end()); return str; } static void StringTokenize(const string& str, vector& tokens, const string& delimiters = " ") { string::size_type lastPos = str.find_first_not_of(delimiters, 0); string::size_type pos = str.find_first_of(delimiters, lastPos); while (string::npos != pos || string::npos != lastPos){ tokens.push_back(str.substr(lastPos, pos - lastPos)); lastPos = str.find_first_not_of(delimiters, pos); pos = str.find_first_of(delimiters, lastPos); } } // just debug static void string_print(string& str) { puts(str.c_str()); } static void test() { string str1 = " hi Mulder , String Demo ÀÔ´Ï´Ù. .... "; string str2 = str1; string str3 = str1; string str4 = str1; string str5 = str1; string str6 = str1; printf("source[%s]\nlower[%s]\nupper[%s]\nleft-trim[%s]\nright-trim[%s]\nboth-trim[%s]\n", str1.c_str(), String_Util::LowerCase(str1).c_str(), String_Util::UpperCase(str2).c_str(), String_Util::LTrim(str3).c_str(), String_Util::RTrim(str4).c_str(), String_Util::Trim(str5).c_str() ); vector tokens; StringTokenize(str6, tokens, " "); for_each(tokens.begin(), tokens.end(), string_print); } }; int main(int argc, char* argv[]) { String_Util::test(); return 0; } //---------------------------------------------------------------------------