]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/string.cpp
* Se agrega un Tanque al ejemplo, y ANDA!!!!
[z.facultad/75.42/plaqui.git] / Server / src / string.cpp
index 15e783c63065677f14cc8e1426bff77a3cd0c45e..97dd19f5123eee3d9de4fd23ed59ef1ca38c983c 100644 (file)
@@ -28,6 +28,8 @@
 #include "plaqui/server/string.h"
 #include <cctype>
 #include <algorithm>
+#include <iterator>
+#include <sstream>
 #ifdef DEBUG
 #      include <iostream>
 #endif // DEBUG
@@ -43,10 +45,17 @@ const string String::SPACE_CHARS = " \t\n\r";
 String::~String(void) {
 }
 
+String::String(void) {
+}
+
 String::String(const string& str):
                string(str.c_str()) {
 }
 
+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);
@@ -54,15 +63,36 @@ String& String::trim(const String& clist) {
 }
 
 String& String::to_lower(void) {
-       transform(begin(), end(), begin(), tolower);
+       transform(begin(), end(), begin(), ::tolower);
        return *this;
 }
 
 String& String::to_upper(void) {
-       transform(begin(), end(), begin(), toupper);
+       transform(begin(), end(), begin(), ::toupper);
        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