#ifndef __UTILS_H__ #define __UTILS_H__ #include #include namespace STG { class IsNotSpace : public std::unary_function { public: IsNotSpace(const std::locale & l) : loc(l) {}; bool operator() (char c) { return !std::use_facet(loc).is(std::ctype_base::space, c); }; private: const std::locale & loc; typedef std::ctype casefacet; }; class ToLowerHelper : public std::unary_function { public: ToLowerHelper(const std::locale & l) : loc(l) {}; char operator() (char c) { return std::tolower(c, loc); }; private: const std::locale & loc; }; class ToUpperHelper : public std::unary_function { public: ToUpperHelper(const std::locale & l) : loc(l) {}; char operator() (char c) { return std::toupper(c, loc); }; private: const std::locale & loc; }; std::string Trim(const std::string & val, const std::locale & loc); std::string ToLower(const std::string & val, const std::locale & loc); std::string ToUpper(const std::string & val, const std::locale & loc); inline std::string Trim(const std::string & val) { return Trim(val, std::locale("")); } inline std::string ToLower(const std::string & val) { return ToLower(val, std::locale("")); } inline std::string ToUpper(const std::string & val) { return ToUpper(val, std::locale("")); } } std::string inet_ntostring(uint32_t ip); #endif