log4tango 4.0.3
|
00001 // 00002 // StringUtil.hh 00003 // 00004 // Copyright (C) : 2000 - 2002 00005 // LifeLine Networks BV (www.lifeline.nl). All rights reserved. 00006 // Bastiaan Bakker. All rights reserved. 00007 // 00008 // 2004,2005,2006,2007,2008,2009,2010 00009 // Synchrotron SOLEIL 00010 // L'Orme des Merisiers 00011 // Saint-Aubin - BP 48 - France 00012 // 00013 // This file is part of log4tango. 00014 // 00015 // Log4ango is free software: you can redistribute it and/or modify 00016 // it under the terms of the GNU Lesser General Public License as published by 00017 // the Free Software Foundation, either version 3 of the License, or 00018 // (at your option) any later version. 00019 // 00020 // Log4tango is distributed in the hope that it will be useful, 00021 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 // GNU Lesser General Public License for more details. 00024 // 00025 // You should have received a copy of the GNU Lesser General Public License 00026 // along with Log4Tango. If not, see <http://www.gnu.org/licenses/>. 00027 00028 #ifndef _LOG4TANGO_STRINGUTIL_H 00029 #define _LOG4TANGO_STRINGUTIL_H 00030 00031 #include "PortabilityImpl.hh" 00032 #include <string> 00033 #include <vector> 00034 #include <climits> 00035 #include <stdarg.h> 00036 00037 namespace log4tango { 00038 00039 class StringUtil 00040 { 00041 public: 00042 00049 static std::string vform(const char* format, va_list args); 00050 00055 static std::string trim(const std::string& s); 00056 00070 static unsigned int split(std::vector<std::string>& v, 00071 const std::string& s, char delimiter, 00072 unsigned int maxSegments = INT_MAX); 00073 00084 template<typename T> 00085 static unsigned int split(T& output, 00086 const std::string& s, char delimiter, 00087 unsigned int maxSegments = INT_MAX) 00088 { 00089 std::string::size_type left = 0; 00090 unsigned int i; 00091 for (i = 1; i < maxSegments; i++) { 00092 std::string::size_type right = s.find(delimiter, left); 00093 if (right == std::string::npos) { 00094 break; 00095 } 00096 *output++ = s.substr(left, right - left); 00097 left = right + 1; 00098 } 00099 *output++ = s.substr(left); 00100 return i; 00101 } 00102 }; 00103 00104 } // namespace log4tango 00105 00106 #endif // _LOG4TANGO_STRINGUTIL_HH 00107