/***********************************************************************************/ /** \file StringHelper.cpp ** \brief Implementation zur Klasse StringHelper ************************************************************************************* ** Autor: Christian Roesch ************************************************************************************* ** -tut nichts- ** *//*********************************************************************************/ // includes #include "StringHelper.h" #include std::vector< char > FrameWork::StringHelper::m_SpaceTab; FrameWork::StringHelper::StringHelperPreparer FrameWork::StringHelper::m_shpDummy; // Methoden-Definitionen namespace FrameWork { /***********************************************************************************/ /** Schneidet einen String an den Separatoren auseinander. Der vorderste Teil wird *** abgeschnitten, falls der Separator gefunden wird. Der Eingabestring wird auf den *** Teil hinter dem Seperator gestutzt *** *** \param strInput [in\out] Ursprungsstring *** \param strSeperator Seperator *** \param strOutput der vorne abgeschnittene Teil *** *** \return true, wenn Seperator gefunden *//*********************************************************************************/ bool StringHelper::splitAt( std::string& strInput, const std::string& strSeperator, std::string& strOutput ) { size_t tStart= strInput.find( strSeperator ); if( tStart == std::string::npos ) { strOutput= strInput; return false; } strOutput= strInput.substr( 0, tStart ); strInput= strInput.substr( tStart + strSeperator.size() ); return true; } /***********************************************************************************/ /** Schneidet einen String an den Separatoren auseinander. Der vorderste Teil wird *** abgeschnitten, falls der Separator gefunden wird. Der Eingabestring wird auf den *** Teil hinter dem Seperator gestutzt *** *** \param strInput [in\out] Ursprungsstring *** \param strSeperator Seperator *** \param strOutput der vorne abgeschnittene Teil *** *** \return true, strInput nicht leer und strOutput enthaelt Daten *** false, strInput leer und strOutput keine enthaelt Daten *//*********************************************************************************/ bool StringHelper::splitLoop( std::string& strInput, const std::string& strSeperator, std::string& strOutput ) { if( strInput.empty() ) { return false; } size_t tStart= strInput.find( strSeperator ); if( tStart == std::string::npos ) { strOutput= strInput; strInput= ""; } else { strOutput= strInput.substr( 0, tStart ); strInput= strInput.substr( tStart + strSeperator.size() ); } return true; } bool StringHelper::tokenize( std::string& strInput, const std::string& strSeperator, std::vector< std::string >& vecOutput ) { std::string strCommand; while( FrameWork::StringHelper::splitAt( strInput, strSeperator, strCommand ) ) { vecOutput.push_back( strCommand ); } vecOutput.push_back( strInput ); return true; } bool StringHelper::trimFront( std::string& strData, char cWhiteSpace ) { int i= 0; if( (int)strData.size() == 0 ) { return false; } while( strData[ i ] == cWhiteSpace ) { i++; } if( i > 0 ) { strData= strData.substr( i ); return true; } return false; } bool StringHelper::trimBack( std::string& strData, char cWhiteSpace ) { int i= (int)strData.size() - 1; if( i == -1 ) { return false; } while( strData[ i ] == cWhiteSpace ) { i--; } if( i < (int)strData.size() - 1 ) { strData= strData.substr( 0, i + 1 ); return true; } return false; } bool StringHelper::trim( std::string& strData, char cWhiteSpace ) { bool bTrimmed= trimFront( strData, cWhiteSpace ); bTrimmed|= trimBack( strData, cWhiteSpace ); return bTrimmed; } bool StringHelper::trimFront( std::string& strData, std::vector< char >& WhiteSpaces ) { bool bTrimmed; do { bTrimmed= false; for( int i= 0; i < (int)WhiteSpaces.size(); ++i ) { bTrimmed|= trimFront( strData, WhiteSpaces[ i ] ); } } while( bTrimmed ); return bTrimmed; } bool StringHelper::trimBack( std::string& strData, std::vector< char >& WhiteSpaces ) { bool bTrimmed; do { bTrimmed= false; for( int i= 0; i < (int)WhiteSpaces.size(); ++i ) { bTrimmed|= trimBack( strData, WhiteSpaces[ i ] ); } } while( bTrimmed ); return bTrimmed; } bool StringHelper::trim( std::string& strData, std::vector< char >& WhiteSpaces ) { bool bTrimmed= trimFront( strData, WhiteSpaces ); bTrimmed|= trimBack( strData, WhiteSpaces ); return bTrimmed; } std::vector< char >& StringHelper::getSpaceTab() { return m_SpaceTab; } void StringHelper::toUpper( std::string& strData ) { for( int i= 0; i < (int)strData.size(); ++i ) { strData[ i ]= toupper( strData[ i ] ); } } void StringHelper::toLower( std::string& strData ) { for( int i= 0; i < (int)strData.size(); ++i ) { strData[ i ]= tolower( strData[ i ] ); } } } /************************************************************************************ ** Ende der Datei: StringHelper.cpp ************************************************************************************/