C++ stringutils
#include <iostream> #include <sstream> using std::string; using std::stringstream; class StringUtils { public: static string replace(const string& subject, const string& search, const string& replace) { string str = subject; size_t pos = 0; while((pos = str.find(search, pos)) != string::npos) { str.replace(pos, search.length(), replace); pos += replace.length(); } return str; }; //---------------------------------------------------------------------- static int string_to_int( const string &s ) { int i; stringstream ss; ss << s; ss >> i; return i; }; //---------------------------------------------------------------------- static string int_to_string( int i ) { stringstream ss; ss << i; return ss.str(); }; //---------------------------------------------------------------------- static bool is_numeric_string( const string &str ) { if (!str.empty()) { for (int i=0,ix=str.length(); i<ix; i++) { if (str[i] < '0' || '9' < str[i]) { return false; } } return true; } return false; }; //---------------------------------------------------------------------- static string uppercase(const std::string& str) { string s = str; for(size_t i=0, ix=s.length()-1; i<=ix; i++) { if ('a'<=s[i] && s[i]<='z') { s[i]-=32; } } return s; }; //---------------------------------------------------------------------- static string lowercase(const std::string& str) { string s = str; for(size_t i=0, ix=s.length()-1; i<=ix; i++) { if ('A'<=s[i] && s[i]<='Z') { s[i]+=32; } } return s; }; //---------------------------------------------------------------------- static string ltrim(const string& str) { size_t startpos = str.find_first_not_of(" \t\n\r"); return string::npos != startpos ? str.substr( startpos ) : str; }; //---------------------------------------------------------------------- static string rtrim(const string& str) { size_t endpos = str.find_last_not_of(" \t\n\r"); return string::npos != endpos ? str.substr( 0, endpos+1 ) : str; }; //---------------------------------------------------------------------- static string trim(const string& str) { string s = str; s.erase(s.find_last_not_of(" \t\n\r") + 1); s.erase(0, s.find_first_not_of(" \t\n\r")); return s; }; //---------------------------------------------------------------------- static bool beginswith(const string& subject, const string& search) { return subject.substr(0,search.length())==search; }; //---------------------------------------------------------------------- static bool endswith(const string& subject, const string& search) { return subject.substr(subject.length() - search.length(),search.length())==search; }; //---------------------------------------------------------------------- static bool contains(const string& subject, const string& search) { return subject.find(search)!=string::npos; }; //---------------------------------------------------------------------- private: StringUtils(){};//static class }; using std::cout; using std::endl; int main(int argc, char *argv[]) { cout << "|" << StringUtils::ltrim(" ABC ") << "|" << endl; cout << "|" << StringUtils::rtrim(" ABC ") << "|" << endl; cout << "|" << StringUtils::trim(" ABC ") << "|" << endl; cout << "|" << StringUtils::trim("ABC") << "|" << endl; cout << StringUtils::uppercase("ABCdef") << endl; cout << StringUtils::lowercase("ABCdef") << endl; cout << StringUtils::replace("ABCDEF", "CD", "ZZ") << endl; cout << "10 is numeric? " << (StringUtils::is_numeric_string("10")? "Y" : "N") << endl; cout << (StringUtils::beginswith("alpha", "al" )? "Y" : "N") << endl; cout << (StringUtils::endswith("alpha", "ha")? "Y" : "N") << endl; cout << (StringUtils::contains("alpha", "ha")? "Y" : "N") << endl; return 0; }
code snippets are licensed under Creative Commons CC-By-SA 3.0 (unless otherwise specified)
Max
on
2015-07-01 11:19:39
This works <strong>perfectly</strong>. Thanks alot for this.
|