find_format.hpp

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

HPP
270
字号
//  Boost string_algo library find_format.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_FIND_FORMAT_HPP#define BOOST_STRING_FIND_FORMAT_HPP#include <deque>#include <boost/detail/iterator.hpp>#include <boost/range/iterator_range.hpp>#include <boost/range/begin.hpp>#include <boost/range/end.hpp>#include <boost/range/const_iterator.hpp>#include <boost/range/as_literal.hpp>#include <boost/algorithm/string/concept.hpp>#include <boost/algorithm/string/detail/find_format.hpp>#include <boost/algorithm/string/detail/find_format_all.hpp>/*! \file    Defines generic replace algorithms. Each algorithm replaces    part(s) of the input. The part to be replaced is looked up using a Finder object.    Result of finding is then used by a Formatter object to generate the replacement.*/namespace boost {    namespace algorithm {// generic replace  -----------------------------------------------------------------//        //! Generic replace algorithm        /*!            Use the Finder to search for a substring. Use the Formatter to format            this substring and replace it in the input.            The result is a modified copy of the input. It is returned as a sequence             or copied to the output iterator.                \param Output An output iterator to which the result will be copied            \param Input An input sequence            \param Finder A Finder object used to search for a match to be replaced            \param Formatter A Formatter object used to format a match            \return An output iterator pointing just after the last inserted character or                a modified copy of the input            \note The second variant of this function provides the strong exception-safety guarantee        */        template<             typename OutputIteratorT,            typename RangeT,            typename FinderT,            typename FormatterT>        inline OutputIteratorT find_format_copy(            OutputIteratorT Output,            const RangeT& Input,            FinderT Finder,            FormatterT Formatter )        {            // Concept check            function_requires<                 FinderConcept<FinderT,                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();            function_requires<                 FormatterConcept<                    FormatterT,                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));            return detail::find_format_copy_impl(                Output,                lit_input,                Formatter,                Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) );        }        //! Generic replace algorithm        /*!            \overload        */        template<             typename SequenceT,             typename FinderT,            typename FormatterT>        inline SequenceT find_format_copy(            const SequenceT& Input,            FinderT Finder,            FormatterT Formatter )        {            // Concept check            function_requires<                 FinderConcept<FinderT,                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            function_requires<                 FormatterConcept<                    FormatterT,                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            return detail::find_format_copy_impl(                Input,                Formatter,                Finder(::boost::begin(Input), ::boost::end(Input)));        }        //! Generic replace algorithm        /*!            Use the Finder to search for a substring. Use the Formatter to format            this substring and replace it in the input. The input is modified in-place.            \param Input An input sequence            \param Finder A Finder object used to search for a match to be replaced            \param Formatter A Formatter object used to format a match        */        template<            typename SequenceT,            typename FinderT,            typename FormatterT>        inline void find_format(             SequenceT& Input,            FinderT Finder,            FormatterT Formatter)        {            // Concept check            function_requires<                 FinderConcept<FinderT,                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            function_requires<                 FormatterConcept<                    FormatterT,                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            detail::find_format_impl(                Input,                Formatter,                Finder(::boost::begin(Input), ::boost::end(Input)));        }//  find_format_all generic ----------------------------------------------------------------//        //! Generic replace all algorithm        /*!            Use the Finder to search for a substring. Use the Formatter to format            this substring and replace it in the input. Repeat this for all matching            substrings.            The result is a modified copy of the input. It is returned as a sequence             or copied to the output iterator.            \param Output An output iterator to which the result will be copied            \param Input An input sequence            \param Finder A Finder object used to search for a match to be replaced            \param Formatter A Formatter object used to format a match            \return An output iterator pointing just after the last inserted character or                a modified copy of the input             \note The second variant of this function provides the strong exception-safety guarantee        */        template<             typename OutputIteratorT,            typename RangeT,            typename FinderT,            typename FormatterT>        inline OutputIteratorT find_format_all_copy(            OutputIteratorT Output,            const RangeT& Input,            FinderT Finder,            FormatterT Formatter)        {            // Concept check            function_requires<                 FinderConcept<FinderT,                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();            function_requires<                 FormatterConcept<                    FormatterT,                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));            return detail::find_format_all_copy_impl(                Output,                lit_input,                Finder,                Formatter,                Finder(::boost::begin(lit_input), ::boost::end(lit_input)));        }        //! Generic replace all algorithm        /*!            \overload        */        template<             typename SequenceT,             typename FinderT,            typename FormatterT >        inline SequenceT find_format_all_copy(            const SequenceT& Input,            FinderT Finder,            FormatterT Formatter )        {            // Concept check            function_requires<                 FinderConcept<FinderT,                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            function_requires<                 FormatterConcept<                    FormatterT,                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            return detail::find_format_all_copy_impl(                Input,                Finder,                Formatter,                Finder( ::boost::begin(Input), ::boost::end(Input) ) );        }        //! Generic replace all algorithm        /*!            Use the Finder to search for a substring. Use the Formatter to format            this substring and replace it in the input. Repeat this for all matching            substrings.The input is modified in-place.            \param Input An input sequence            \param Finder A Finder object used to search for a match to be replaced            \param Formatter A Formatter object used to format a match        */        template<            typename SequenceT,            typename FinderT,            typename FormatterT >        inline void find_format_all(             SequenceT& Input,            FinderT Finder,            FormatterT Formatter )        {            // Concept check            function_requires<                 FinderConcept<FinderT,                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            function_requires<                 FormatterConcept<                    FormatterT,                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();            detail::find_format_all_impl(                Input,                Finder,                Formatter,                Finder(::boost::begin(Input), ::boost::end(Input)));        }    } // namespace algorithm    // pull the names to the boost namespace    using algorithm::find_format_copy;    using algorithm::find_format;    using algorithm::find_format_all_copy;    using algorithm::find_format_all;} // namespace boost#endif  // BOOST_STRING_FIND_FORMAT_HPP

⌨️ 快捷键说明

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