diff --git a/alib2std/src/extensions/string.hpp b/alib2std/src/extensions/string.hpp index 445acbe0518f7ba34707f50a1d7dcd769ad3b89d..7f1011922861e604625e54e5484eb592678c7403 100644 --- a/alib2std/src/extensions/string.hpp +++ b/alib2std/src/extensions/string.hpp @@ -12,6 +12,7 @@ #include <stdexcept> #include "compare.hpp" #include "vector.hpp" +#include <algorithm> namespace ext { @@ -125,6 +126,27 @@ ext::vector < std::string > explode ( const std::string & source, const std::str std::string implode ( const std::vector < std::string > & source, const std::string & delimiter ); +inline bool not_isspace ( int ch ) { + return ! std::isspace ( ch ); +} + +inline void ltrim ( std::string & s ) { + auto end = std::find_if ( s.begin ( ), s.end ( ), not_isspace ); + s.erase ( s.begin ( ), end ); +} + +// trim from end (in place) +inline void rtrim ( std::string & s ) { + auto begin = std::find_if ( s.rbegin ( ), s.rend ( ), not_isspace ).base ( ); + s.erase ( begin, s.end ( ) ); +} + +// trim from both ends (in place) +inline void trim ( std::string & s ) { + ltrim(s); + rtrim(s); +} + } /* namespace ext */ #endif /* __STRING_HPP_ */