00001
00002
00003
00004
00005
00006
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