diff --git a/server/src/utils/string.cpp b/server/src/utils/string.cpp index aa834ae..b8ff70f 100644 --- a/server/src/utils/string.cpp +++ b/server/src/utils/string.cpp @@ -1,17 +1,34 @@ #include "string.hpp" std::string sosc::str::trim(std::string str) { - return rtrimr(ltrimr(str)); + return *rtrim(ltrim(&str)); } std::string* sosc::str::trim(std::string* str) { return rtrim(ltrim(str)); } -std::string& sosc::str::trimr(std::string& str) { - return rtrimr(ltrimr(str)); +std::string sosc::str::ltrim(std::string str) { + return *ltrim(&str); +} + +std::string* sosc::str::ltrim(std::string* str) { + int marker = 0; + for(; marker < str->length(); ++marker) + if((*str)[marker] < 0x21) break; + + str->erase(0, marker - 1); + return str; } std::string sosc::str::rtrim(std::string str) { - int marker = 0; - + return *rtrim(&str); +} + +std::string* sosc::str::rtrim(std::string *str) { + int marker = 0; + for(; marker < str->length(); --marker) + if((*str)[str->length() - marker - 1] < 0x21) break; + + str->erase(str->length() - marker - 1, marker); + return str; } diff --git a/server/src/utils/string.hpp b/server/src/utils/string.hpp index c4674cc..1ceef38 100644 --- a/server/src/utils/string.hpp +++ b/server/src/utils/string.hpp @@ -1,21 +1,19 @@ #ifndef SOSC_UTIL_STRING_H #define SOSC_UTIL_STRING_H +#include #include namespace sosc { namespace str { std::string trim (std::string str); std::string* trim (std::string* str); -std::string& trimr(std::string& str); - -std::string rtrim (std::string str); -std::string* rtrim (std::string* str); -std::string& rtrimr(std::string& str); std::string ltrim (std::string str); std::string* ltrim (std::string* str); -std::string& ltrimr(std::string& str); + +std::string rtrim (std::string str); +std::string* rtrim (std::string* str); std::vector split (const std::string& str, char delimiter, int count = -1);