$search
00001 /* 00002 * StringUtil.hh 00003 * 00004 * Copyright 2002, Log4cpp Project. All rights reserved. 00005 * 00006 * See the COPYING file for the terms of usage and distribution. 00007 */ 00008 00009 #ifndef _LOG4CPP_STRINGUTIL_HH 00010 #define _LOG4CPP_STRINGUTIL_HH 00011 00012 #include "PortabilityImpl.hh" 00013 #include <string> 00014 #include <vector> 00015 #include <climits> 00016 #include <stdarg.h> 00017 00018 namespace log4cpp { 00019 00020 class StringUtil { 00021 public: 00022 00029 static std::string vform(const char* format, va_list args); 00030 00035 static std::string trim(const std::string& s); 00036 00050 static unsigned int split(std::vector<std::string>& v, 00051 const std::string& s, char delimiter, 00052 unsigned int maxSegments = INT_MAX); 00063 template<typename T> static unsigned int split(T& output, 00064 const std::string& s, char delimiter, 00065 unsigned int maxSegments = INT_MAX) { 00066 std::string::size_type left = 0; 00067 unsigned int i; 00068 for(i = 1; i < maxSegments; i++) { 00069 std::string::size_type right = s.find(delimiter, left); 00070 if (right == std::string::npos) { 00071 break; 00072 } 00073 *output++ = s.substr(left, right - left); 00074 left = right + 1; 00075 } 00076 00077 *output++ = s.substr(left); 00078 return i; 00079 } 00080 }; 00081 } 00082 00083 #endif // _LOG4CPP_STRINGUTIL_HH 00084