trim.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 96 行

HPP
96
字号
//  Boost string_algo library trim.hpp header file  ---------------------------////  Copyright Pavol Droba 2002-2003.//// Distributed under the Boost Software License, Version 1.0.//    (See accompanying file LICENSE_1_0.txt or copy at//          http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org/ for updates, documentation, and revision history.#ifndef BOOST_STRING_TRIM_DETAIL_HPP#define BOOST_STRING_TRIM_DETAIL_HPP#include <boost/algorithm/string/config.hpp>#include <boost/detail/iterator.hpp>namespace boost {    namespace algorithm {        namespace detail {//  trim iterator helper -----------------------------------------------//            // Search for first non matching character from the beginning of the sequence            template< typename ForwardIteratorT, typename PredicateT >            inline ForwardIteratorT trim_begin(                 ForwardIteratorT InBegin,                 ForwardIteratorT InEnd,                 PredicateT IsSpace )            {                ForwardIteratorT It=InBegin;                for(; It!=InEnd; ++It )                {                    if (!IsSpace(*It))                        return It;                }                return It;            }            // Search for first non matching character from the end of the sequence            template< typename ForwardIteratorT, typename PredicateT >            inline ForwardIteratorT trim_end(                 ForwardIteratorT InBegin,                 ForwardIteratorT InEnd,                 PredicateT IsSpace )            {                typedef BOOST_STRING_TYPENAME boost::detail::                    iterator_traits<ForwardIteratorT>::iterator_category category;                return trim_end_iter_select( InBegin, InEnd, IsSpace, category() );            }            template< typename ForwardIteratorT, typename PredicateT >            inline ForwardIteratorT trim_end_iter_select(                 ForwardIteratorT InBegin,                 ForwardIteratorT InEnd,                 PredicateT IsSpace,                std::forward_iterator_tag )            {                ForwardIteratorT TrimIt=InBegin;                for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )                {                    if ( !IsSpace(*It) )                     {                        TrimIt=It;                        ++TrimIt;                    }                }                return TrimIt;            }            template< typename ForwardIteratorT, typename PredicateT >            inline ForwardIteratorT trim_end_iter_select(                 ForwardIteratorT InBegin,                 ForwardIteratorT InEnd,                 PredicateT IsSpace,                std::bidirectional_iterator_tag )            {                for( ForwardIteratorT It=InEnd; It!=InBegin;  )                {                    if ( !IsSpace(*(--It)) )                        return ++It;                }                return InBegin;            }        } // namespace detail    } // namespace algorithm} // namespace boost#endif  // BOOST_STRING_TRIM_DETAIL_HPP

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?