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 + -
显示快捷键?