Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

StringUtil.hh

Go to the documentation of this file.
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 

Generated on Mon Oct 28 23:41:43 2002 for log4cpp by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002