#include "StringUtils.h" using namespace std; bool StripString(string& src) { size_t pos = 0; if (src.empty()) { return false; } while ((pos < src.length()) && (' ' == src[pos])) pos++; src.erase(0, pos); pos = 0; while ((pos < src.length()) && ('\t' == src[pos])) pos++; src.erase(0, pos); pos = src.length() - 1; while (pos && (' ' == src[pos])) pos--; src.erase(pos+1); pos = src.length() - 1; while (pos && ('\t' == src[pos])) pos--; src.erase(pos+1); return true; } bool ParseString(const string& src, string& key, string& value) { if (src.empty()) return false; // find seporator ":" size_t seporator_pos = src.find(":"); if (string::npos != seporator_pos) { key = src.substr(0, seporator_pos); StripString(key); value = src.substr(seporator_pos+1); StripString(value); return true; } else { return false; } } set SplitString(const string& src, const char seporator) { set result; if (!src.empty()) { size_t seporator_pos; size_t prev_pos = 0; do { seporator_pos = src.find(seporator, prev_pos); result.insert(src.substr(prev_pos, seporator_pos - prev_pos)); prev_pos = seporator_pos + 1; } while (string::npos != seporator_pos); } return result; } vector SplitStringVector(const string& src, const char seporator) { vector result; if (!src.empty()) { size_t seporator_pos; size_t prev_pos = 0; do { seporator_pos = src.find(seporator, prev_pos); string tmp = src.substr(prev_pos, seporator_pos - prev_pos); result.push_back(tmp); prev_pos = seporator_pos + 1; } while (string::npos != seporator_pos); } return result; }