00001 #include "helpers.h"
00002 #include <iostream>
00003 using namespace std;
00004
00005 bool String::split(const string &str, char delimiter, string &left, string &right) {
00006 left = "";
00007 right = "";
00008 int i = str.find(delimiter);
00009
00010
00011 if(i > 0 && i < (int)str.length()) {
00012 const char *c = str.c_str();
00013
00014 left.insert(0, c, i);
00015 right.insert(0, &c[i + 1], str.length() - i - 1);
00016 return true;
00017 } else
00018 left = str;
00019 return false;
00020 }
00021
00022 list<string> String::split_to_list(string str, char delimiter) {
00023 list<string> l;
00024 if((str.c_str())[str.length() - 1] != delimiter)
00025 str += delimiter;
00026 const char *c = str.c_str();
00027 int j = 0;
00028 for(int i = 0; c[i]; i++) {
00029 if(c[i] == delimiter) {
00030 string a;
00031 a.insert(0, &c[j], i - j);
00032 j = i + 1;
00033 l.push_back(a);
00034 }
00035 }
00036 return l;
00037 }
00038
00039 map<string, string> String::split_list_to_map(const list<string> &l, char delimiter) {
00040 map<string, string> m;
00041 for(list<string>::const_iterator it = l.begin(); it != l.end(); it++) {
00042 int i = (*it).find(delimiter);
00043 if(i > 0 && i < (int)(*it).length()) {
00044 const char *c = (*it).c_str();
00045 string n, v;
00046 n.insert(0, c, i);
00047 v.insert(0, &c[i + 1], (*it).length() - i - 1);
00048 m[n] = v;
00049 }
00050 }
00051 return m;
00052 }