00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __D_STRING__
00024 #define __D_STRING__
00025
00026 #include <string>
00027 #include <vector>
00028 #include <string>
00029 #include <sstream>
00030
00031 namespace DUtils {
00032
00034 class StringFunctions
00035 {
00036 public:
00037
00047 static void split(const std::string &s, std::vector<std::string> &tokens,
00048 const std::string &delims = " \t\n", int max_splits = -1);
00049
00055 static void trim(std::string &s);
00056
00066 static void removeFrom(std::string &s, const char c,
00067 const std::string &escape = "");
00068
00077 static void replace(std::string &s,
00078 const std::vector<std::pair<std::string, std::string> > &map);
00079
00086 static void replace(std::string &s, const std::string &search,
00087 const std::string &rep);
00088
00093 template<class T>
00094 static std::string toString(const T& data);
00095
00100 template<class T>
00101 static T fromString(const std::string &s);
00102
00103 };
00104
00105
00106
00107 template<class T>
00108 std::string StringFunctions::toString(const T& data)
00109 {
00110 std::stringstream ss;
00111 ss << data;
00112 return ss.str();
00113 }
00114
00115
00116
00117 template<>
00118 inline std::string StringFunctions::fromString(const std::string &s)
00119 {
00120 return s;
00121 }
00122
00123 template<class T>
00124 T StringFunctions::fromString(const std::string &s)
00125 {
00126 if(s.empty())
00127 return T();
00128 else
00129 {
00130 std::stringstream ss(s);
00131 T ret;
00132 ss >> ret;
00133 return ret;
00134 }
00135 }
00136
00137
00138
00139 }
00140
00141 #endif
00142