OpenRTM
1.0.0
|
00001 // -*- C++ -*- 00020 #ifndef COIL_STRINGUTIL_H 00021 #define COIL_STRINGUTIL_H 00022 00023 #include <string> 00024 #include <vector> 00025 #include <sstream> 00026 00027 // Cygwin's gcc does not provide wstring type 00028 #if defined(Cygwin) && ( __GNUC__ < 4 ) 00029 namespace std 00030 { 00031 typedef basic_string<wchar_t> wstring; 00032 } 00033 #endif 00034 00035 namespace coil 00036 { 00037 typedef std::vector<std::string> vstring; 00038 00058 std::wstring string2wstring(std::string str); 00059 00079 std::string wstring2string(std::wstring wstr); 00080 00098 void toUpper(std::string& str); 00099 00117 void toLower(std::string& str); 00118 00145 int getlinePortable(std::istream& istr, std::string& line); 00146 00170 bool isEscaped(const std::string& str, std::string::size_type pos); 00171 00204 std::string escape(const std::string str); 00205 00242 std::string unescape(const std::string str); 00243 00263 void eraseBlank(std::string& str); 00264 00284 void eraseHeadBlank(std::string& str); 00285 00306 void eraseTailBlank(std::string& str); 00307 00328 void eraseBothEndsBlank(std::string& str); 00329 00351 std::string normalize(std::string& str); 00352 00374 unsigned int replaceString(std::string& str, const std::string from, 00375 const std::string to); 00376 00400 vstring split(const std::string& input, 00401 const std::string& delimiter, 00402 bool ignore_empty = false); 00403 00432 bool toBool(std::string str, std::string yes, std::string no, 00433 bool default_value = true); 00457 bool includes(const vstring& list, std::string value, 00458 bool ignore_case = true); 00459 00483 bool includes(const std::string& list, std::string value, 00484 bool ignore_case = true); 00485 00515 bool isAbsolutePath(const std::string& str); 00516 00542 bool isURL(const std::string& str); 00543 00565 template <class Printable> 00566 std::string otos(Printable n) 00567 { 00568 std::stringstream str_stream; 00569 str_stream << n; 00570 return str_stream.str(); 00571 }; 00572 00596 template <typename To> 00597 bool stringTo(To& val, const char* str) 00598 { 00599 if (str == 0) { return false; } 00600 00601 std::stringstream s; 00602 if ((s << str).fail()) { return false; } 00603 if ((s >> val).fail()) { return false; } 00604 return true; 00605 } 00606 00630 template<> 00631 bool stringTo<std::string>(std::string& val, const char* str); 00632 00655 vstring unique_sv(vstring sv); 00656 00681 std::string flatten(vstring sv); 00682 00706 char** toArgv(const vstring& args); 00707 00708 00730 std::string sprintf(char const * __restrict fmt, ...); 00731 00732 }; // namepsace coil 00733 #endif // COIL_STRINGUTIL_H