37    T ret( std::forward<StrType>(s) );
 
   44      typename T::size_type p = ret.find_first_not_of( 
" \t\r\n" );
 
   47        if constexpr ( std::is_same_v<std::string_view, StrType> )
 
   54      ret.remove_prefix( p );
 
   59      typename T::size_type p = ret.find_last_not_of( 
" \t\r\n" );
 
   62        if constexpr ( std::is_same_v<std::string_view, StrType> )
 
   69      ret.remove_suffix( ret.size() - ( p+1 ) );
 
 
   76  void split( 
const boost::string_view & line_r, TOutputIterator result_r, 
const boost::string_view & sepchars_r = 
" \t", 
const Trim trim_r = 
Trim::NO_TRIM )
 
   79    std::string_view::size_type tokenEnd = 0, tokenBegin = line_r.find_first_not_of( sepchars_r );
 
   82    if ( tokenBegin == std::string_view::npos )
 
   85    while ( ( tokenEnd = line_r.find_first_of( sepchars_r, tokenBegin ) ) != std::string_view::npos ) {
 
   86      auto line = line_r.substr( tokenBegin, tokenEnd-tokenBegin );
 
   87      *result_r = 
trim( line, trim_r );
 
   90      tokenBegin = line_r.find_first_not_of( sepchars_r, tokenEnd );
 
   91      if( tokenBegin == std::string_view::npos )
 
   96    if ( tokenBegin != std::string_view::npos && tokenBegin < line_r.size() )
 
   97      *result_r = 
trim( line_r.substr( tokenBegin ), trim_r );