Files
bluflame/evoke-64k/bp10/StringHelper.cpp
2026-04-18 22:31:51 +02:00

179 lines
4.0 KiB
C++

/***********************************************************************************/
/** \file StringHelper.cpp
** \brief Implementation zur Klasse StringHelper
*************************************************************************************
** Autor: Christian Roesch
*************************************************************************************
** -tut nichts-
**
*//*********************************************************************************/
// includes
#ifdef EXTRACODE
#include "StringHelper.h"
#include <cstdio>
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 der vorne abgeschnittene Teil
***
*** \return true, wenn Seperator gefunden
*//*********************************************************************************/
bool StringHelper::splitAt(
std::string& strInput,
std::string strSeperator,
std::string& strOutput )
{
size_t tStart= strInput.find( strSeperator );
if( tStart == std::string::npos )
{
return false;
}
strOutput= strInput.substr( 0, tStart );
strInput= strInput.substr( tStart + strSeperator.size() );
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 ] );
}
}
int StringHelper::searchAndRreplace(
const std::string &strSearchString,
const std::string &strReplaceString,
std::string& strData )
{
int iRet= 0;
std::string::size_type pos = strData.find(strSearchString, 0);
int intLengthSearch = strSearchString.length();
while(std::string::npos != pos)
{
iRet++;
strData.replace(pos, intLengthSearch, strReplaceString);
pos = strData.find(strSearchString, pos + intLengthSearch);
}
return iRet;
}
}
#endif
/************************************************************************************
** Ende der Datei: StringHelper.cpp
************************************************************************************/