replace.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 929 行 · 第 1/3 页
HPP
929 行
// Boost string_algo library replace.hpp header file ---------------------------//// Copyright Pavol Droba 2002-2006.//// 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_REPLACE_HPP#define BOOST_STRING_REPLACE_HPP#include <boost/algorithm/string/config.hpp>#include <boost/range/iterator_range.hpp>#include <boost/range/begin.hpp>#include <boost/range/end.hpp>#include <boost/range/iterator.hpp>#include <boost/range/const_iterator.hpp>#include <boost/algorithm/string/find_format.hpp>#include <boost/algorithm/string/finder.hpp>#include <boost/algorithm/string/formatter.hpp>#include <boost/algorithm/string/compare.hpp>/*! \file Defines various replace algorithms. Each algorithm replaces part(s) of the input according to set of searching and replace criteria.*/namespace boost { namespace algorithm {// replace_range --------------------------------------------------------------------// //! Replace range algorithm /*! Replace the given range in the input string. 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 string \param SearchRange A range in the input to be substituted \param Format A substitute string \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 Range1T, typename Range2T> inline OutputIteratorT replace_range_copy( OutputIteratorT Output, const Range1T& Input, const iterator_range< BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type>& SearchRange, const Range2T& Format) { return find_format_copy( Output, Input, range_finder(SearchRange), const_formatter(Format)); } //! Replace range algorithm /*! \overload */ template<typename SequenceT, typename RangeT> inline SequenceT replace_range_copy( const SequenceT& Input, const iterator_range< BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>& SearchRange, const RangeT& Format) { return find_format_copy( Input, range_finder(SearchRange), const_formatter(Format)); } //! Replace range algorithm /*! Replace the given range in the input string. The input sequence is modified in-place. \param Input An input string \param SearchRange A range in the input to be substituted \param Format A substitute string */ template<typename SequenceT, typename RangeT> inline void replace_range( SequenceT& Input, const iterator_range< BOOST_STRING_TYPENAME range_iterator<SequenceT>::type>& SearchRange, const RangeT& Format) { find_format( Input, range_finder(SearchRange), const_formatter(Format)); }// replace_first --------------------------------------------------------------------// //! Replace first algorithm /*! Replace the first match of the search substring in the input with the format string. 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 string \param Search A substring to be searched for \param Format A substitute string \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 Range1T, typename Range2T, typename Range3T> inline OutputIteratorT replace_first_copy( OutputIteratorT Output, const Range1T& Input, const Range2T& Search, const Range3T& Format) { return find_format_copy( Output, Input, first_finder(Search), const_formatter(Format) ); } //! Replace first algorithm /*! \overload */ template<typename SequenceT, typename Range1T, typename Range2T> inline SequenceT replace_first_copy( const SequenceT& Input, const Range1T& Search, const Range2T& Format ) { return find_format_copy( Input, first_finder(Search), const_formatter(Format) ); } //! Replace first algorithm /*! replace the first match of the search substring in the input with the format string. The input sequence is modified in-place. \param Input An input string \param Search A substring to be searched for \param Format A substitute string */ template<typename SequenceT, typename Range1T, typename Range2T> inline void replace_first( SequenceT& Input, const Range1T& Search, const Range2T& Format ) { find_format( Input, first_finder(Search), const_formatter(Format) ); }// replace_first ( case insensitive ) ---------------------------------------------// //! Replace first algorithm ( case insensitive ) /*! Replace the first match of the search substring in the input with the format string. The result is a modified copy of the input. It is returned as a sequence or copied to the output iterator. Searching is case insensitive. \param Output An output iterator to which the result will be copied \param Input An input string \param Search A substring to be searched for \param Format A substitute string \param Loc A locale used for case insensitive comparison \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 Range1T, typename Range2T, typename Range3T> inline OutputIteratorT ireplace_first_copy( OutputIteratorT Output, const Range1T& Input, const Range2T& Search, const Range3T& Format, const std::locale& Loc=std::locale() ) { return find_format_copy( Output, Input, first_finder(Search, is_iequal(Loc)), const_formatter(Format) ); } //! Replace first algorithm ( case insensitive ) /*! \overload */ template<typename SequenceT, typename Range2T, typename Range1T> inline SequenceT ireplace_first_copy( const SequenceT& Input, const Range2T& Search, const Range1T& Format, const std::locale& Loc=std::locale() ) { return find_format_copy( Input, first_finder(Search, is_iequal(Loc)), const_formatter(Format) ); } //! Replace first algorithm ( case insensitive ) /*! Replace the first match of the search substring in the input with the format string. Input sequence is modified in-place. Searching is case insensitive. \param Input An input string \param Search A substring to be searched for \param Format A substitute string \param Loc A locale used for case insensitive comparison */ template<typename SequenceT, typename Range1T, typename Range2T> inline void ireplace_first( SequenceT& Input, const Range1T& Search, const Range2T& Format, const std::locale& Loc=std::locale() ) { find_format( Input, first_finder(Search, is_iequal(Loc)), const_formatter(Format) ); }// replace_last --------------------------------------------------------------------// //! Replace last algorithm /*! Replace the last match of the search string in the input with the format string. 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 string \param Search A substring to be searched for \param Format A substitute string \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 Range1T, typename Range2T, typename Range3T> inline OutputIteratorT replace_last_copy( OutputIteratorT Output, const Range1T& Input, const Range2T& Search, const Range3T& Format ) { return find_format_copy( Output, Input, last_finder(Search), const_formatter(Format) ); } //! Replace last algorithm /*! \overload */ template<typename SequenceT, typename Range1T, typename Range2T> inline SequenceT replace_last_copy( const SequenceT& Input, const Range1T& Search, const Range2T& Format ) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?