00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <utils/misc/string_conversions.h>
00025 #include <core/exceptions/system.h>
00026
00027 #ifndef _GNU_SOURCE
00028 #define _GNU_SOURCE
00029 #endif
00030
00031 #include <cstdio>
00032 #include <cstdlib>
00033
00034 namespace fawkes {
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 std::string
00046 StringConversions::to_upper(std::string str)
00047 {
00048 for(unsigned int i = 0; i < str.length(); ++i) {
00049 str[i] = (char)toupper(str[i]);
00050 }
00051 return str;
00052 }
00053
00054
00055
00056
00057
00058
00059 std::string
00060 StringConversions::to_lower(std::string str)
00061 {
00062 for(unsigned int i = 0; i < str.length(); ++i) {
00063 str[i] = (char)tolower(str[i]);
00064 }
00065 return str;
00066 }
00067
00068
00069
00070
00071
00072
00073 std::string
00074 StringConversions::to_string(const unsigned int i)
00075 {
00076 char *tmp;
00077 std::string rv;
00078 if (asprintf(&tmp, "%u", i) == -1) {
00079 throw OutOfMemoryException("StringConversions::tostring(const unsigned int): asprintf() failed");
00080 }
00081 rv = tmp;
00082 free(tmp);
00083 return rv;
00084 }
00085
00086
00087
00088
00089
00090
00091 std::string
00092 StringConversions::to_string(const int i)
00093 {
00094 char *tmp;
00095 std::string rv;
00096 if (asprintf(&tmp, "%i", i) == -1) {
00097 throw OutOfMemoryException("StringConversions::tostring(const int): asprintf() failed");
00098 }
00099 rv = tmp;
00100 free(tmp);
00101 return rv;
00102 }
00103
00104
00105
00106
00107
00108
00109 std::string
00110 StringConversions::to_string(const float f)
00111 {
00112 char *tmp;
00113 std::string rv;
00114 if (asprintf(&tmp, "%f", f) == -1) {
00115 throw OutOfMemoryException("StringConversions::tostring(const float): asprintf() failed");
00116 }
00117 rv = tmp;
00118 free(tmp);
00119 return rv;
00120 }
00121
00122
00123
00124
00125
00126
00127 std::string
00128 StringConversions::to_string(const double d)
00129 {
00130 char *tmp;
00131 std::string rv;
00132 if (asprintf(&tmp, "%f", d) == -1) {
00133 throw OutOfMemoryException("StringConversions::tostring(const double d): asprintf() failed");
00134 }
00135 rv = tmp;
00136 free(tmp);
00137 return rv;
00138 }
00139
00140
00141
00142
00143
00144
00145 std::string
00146 StringConversions::to_string(const bool b)
00147 {
00148 if ( b ) {
00149 return std::string("true");
00150 } else {
00151 return std::string("false");
00152 }
00153 }
00154
00155
00156
00157
00158
00159
00160 unsigned int
00161 StringConversions::to_uint(std::string s)
00162 {
00163 unsigned int l = atoll(s.c_str());
00164 return l;
00165 }
00166
00167
00168
00169
00170
00171
00172 int
00173 StringConversions::to_int(std::string s)
00174 {
00175 return atoi(s.c_str());
00176 }
00177
00178
00179
00180
00181
00182
00183 float
00184 StringConversions::to_float(std::string s)
00185 {
00186 return (float)atof(s.c_str());
00187 }
00188
00189
00190
00191
00192
00193
00194 double
00195 StringConversions::to_double(std::string s)
00196 {
00197 return atof(s.c_str());
00198 }
00199
00200
00201
00202
00203
00204
00205 bool
00206 StringConversions::to_bool(std::string s)
00207 {
00208 if ( (s == "true") ||
00209 (s == "yes") ||
00210 (s == "1") ) {
00211 return true;
00212 } else {
00213 return false;
00214 }
00215 }
00216
00217
00218
00219
00220
00221 void
00222 StringConversions::trim_inplace(std::string &s)
00223 {
00224 std::string::size_type p1 = s.find_first_not_of(' ');
00225 std::string::size_type p2 = s.find_last_not_of(' ');
00226 s = s.substr(p1 == std::string::npos ? 0 : p1,
00227 p2 == std::string::npos ? s.length() - 1 : p2 - p1 + 1);
00228 }
00229
00230
00231
00232
00233
00234
00235
00236 std::string
00237 StringConversions::trim(std::string &s)
00238 {
00239 std::string::size_type p1 = s.find_first_not_of(' ');
00240 std::string::size_type p2 = s.find_last_not_of(' ');
00241 return s.substr(p1 == std::string::npos ? 0 : p1,
00242 p2 == std::string::npos ? s.length() - 1 : p2 - p1 + 1);
00243 }
00244
00245
00246 }