/*************************************************************************** stringtools.h - description ------------------- begin : Mon Dec 10 2001 copyright : (C) 2001 by Andre Simon email : andre.simon1@gmx.de ***************************************************************************/ /* This file is part of Highlight. Highlight is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Highlight is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Highlight. If not, see . */ #ifndef STRINGTOOLS_H #define STRINGTOOLS_H #include #include #include using namespace std; /// Contains methods for string manipulation namespace StringTools { /** Change Keyword case */ enum KeywordCase { CASE_UNCHANGED, ///< do not alter case CASE_LOWER, ///< convert to lower case CASE_UPPER, ///< convert to upper case CASE_CAPITALIZE ///< convert first character to upper case }; /** Change character case of strings \param s input string \param kcase case modification indicator \return modified string */ string change_case ( const string & s, const KeywordCase kcase = CASE_LOWER ) throw(); /** Trim string (remove whitespace) \param value String \return string trimmed on the left */ string trimRight ( const string &value ); /** Parse data within parantheses \param s String, containing a opening and a closing paranthesis \return value between "(", ")" */ string getParantheseVal ( const string &s ); /** Split string and return items separated by a delimiter \param s string containing tokens \param delim Token delimiter \return vector containing found tokens */ vector splitString ( const string& s, unsigned char delim ); /** Convert string to a numeric value of the given type \param val variable of specified type which will contain the numeric value \param s string containing a number \param f format specifier function (IO manipulator) \return true if successfull */ template bool str2num ( T &val, const std::string& s, std::ios_base& ( *f ) ( std::ios_base& ) ) { std::istringstream iss ( s ); return ! ( iss >> f >> val ).fail(); } } #endif