/***************************************************************************
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