From d2c8070f87a6b9fa8654ba4f59f224a5a314d7f0 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 8 Dec 2017 18:08:16 +0100 Subject: [PATCH] add string trim free function --- alib2std/src/extensions/string.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/alib2std/src/extensions/string.hpp b/alib2std/src/extensions/string.hpp index 445acbe051..7f10119228 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_ */ -- GitLab