X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/00cffd5f7c35a915c09d55e6292775e9e01bdeec..b0a202776ab7634c206b495b42e20cfe6492e035:/Server/src/string.cpp diff --git a/Server/src/string.cpp b/Server/src/string.cpp index edc522c..8f9b2db 100644 --- a/Server/src/string.cpp +++ b/Server/src/string.cpp @@ -28,30 +28,87 @@ #include "plaqui/server/string.h" #include #include +#include +#include #ifdef DEBUG # include #endif // DEBUG -const std::string PlaQui::Server::String::SPACE_CHARS = " \t\n\r"; - -PlaQui::Server::String::String(const std::string& str): - std::string(str.c_str()) { +using namespace std; + +namespace PlaQui { + +namespace Server { + +const string String::SPACE_CHARS = " \t\n\r"; + +String::~String(void) { +} + +String::String(void) { } -PlaQui::Server::String& PlaQui::Server::String::trim( - const PlaQui::Server::String& clist) { +String::String(const string& str): + string(str.c_str()) { +} + +String::String(const vector& v, const string& sep) { + (*this) = join(v, sep); +} + +String& String::trim(const String& clist) { erase(0, find_first_not_of(clist)); erase(find_last_not_of(clist) + 1); return *this; } -PlaQui::Server::String& PlaQui::Server::String::to_lower(void) { - std::transform(begin(), end(), begin(), tolower); +String& String::to_lower(void) { + transform(begin(), end(), begin(), ::tolower); return *this; } -PlaQui::Server::String& PlaQui::Server::String::to_upper(void) { - std::transform(begin(), end(), begin(), toupper); +String& String::to_upper(void) { + transform(begin(), end(), begin(), ::toupper); return *this; } +vector String::split(char sep) const { + vector v; + String::size_type start = 0; + String::size_type end = find(sep); + while (end != String::npos) { + v.push_back(substr(start, end - start)); + start = end + 1; + end = find(sep, start); + } + if (start != length()) { + v.push_back(substr(start, end - start)); + } + return v; +} + +String String::join(const vector& v, const string& sep) { + stringstream ss; + std::copy(v.begin(), v.end(), ostream_iterator(ss, sep.c_str())); + return ss.str(); +} + +/* +template < class T > T& String::to(T& p) const { + stringstream ss(*this); + ss >> p; + return p; +} + +template < class T > String& String::from(const T& p) { + stringstream ss; + ss << p; + ss >> (*this); + return *this; +} +*/ + +} // namespace Server + +} // namespace PlaQui +