]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/string.cpp
Se arregla el bug que hacia que el cliente levante mal archivos XML grandes.
[z.facultad/75.42/plaqui.git] / Server / src / string.cpp
index edc522c3d17a6c4312205d5f74df1978175592ae..97dd19f5123eee3d9de4fd23ed59ef1ca38c983c 100644 (file)
 #include "plaqui/server/string.h"
 #include <cctype>
 #include <algorithm>
 #include "plaqui/server/string.h"
 #include <cctype>
 #include <algorithm>
+#include <iterator>
+#include <sstream>
 #ifdef DEBUG
 #      include <iostream>
 #endif // DEBUG
 
 #ifdef DEBUG
 #      include <iostream>
 #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) {
+}
+
+String::String(const string& str):
+               string(str.c_str()) {
 }
 
 }
 
-PlaQui::Server::String& PlaQui::Server::String::trim(
-               const PlaQui::Server::String& clist) {
+String::String(const vector<string>& 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;
 }
 
        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;
 }
 
        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;
 }
 
        return *this;
 }
 
+vector<string> String::split(char sep) const {
+       vector<string> 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<string>& v, const string& sep) {
+       stringstream ss;
+       std::copy(v.begin(), v.end(), ostream_iterator<string>(ss, sep.c_str()));
+       return ss.str();
+}
+
+} // namespace Server
+
+} // namespace PlaQui
+