📄 replace.hpp
字号:
// Boost string_algo library replace.hpp header file ---------------------------//// Copyright Pavol Droba 2002-2003. Use, modification and// distribution is subject to 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/algorithm/string/collection_traits.hpp>#include <boost/algorithm/string/iterator_range.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 Collection1T, typename Collection2T> inline OutputIteratorT replace_range_copy( OutputIteratorT Output, const Collection1T& Input, const iterator_range< BOOST_STRING_TYPENAME const_iterator_of<Collection1T>::type>& SearchRange, const Collection2T& Format) { return find_format_copy( Output, Input, range_finder(SearchRange), const_formatter(Format)); } //! Replace range algorithm /*! \overload */ template<typename SequenceT, typename CollectionT> inline SequenceT replace_range_copy( const SequenceT& Input, const iterator_range< BOOST_STRING_TYPENAME const_iterator_of<SequenceT>::type>& SearchRange, const CollectionT& 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 CollectionT> inline void replace_range( SequenceT& Input, const iterator_range< BOOST_STRING_TYPENAME iterator_of<SequenceT>::type>& SearchRange, const CollectionT& 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 Collection1T, typename Collection2T, typename Collection3T> inline OutputIteratorT replace_first_copy( OutputIteratorT Output, const Collection1T& Input, const Collection2T& Search, const Collection3T& Format) { return find_format_copy( Output, Input, first_finder(Search), const_formatter(Format) ); } //! Replace first algorithm /*! \overload */ template<typename SequenceT, typename Collection1T, typename Collection2T> inline SequenceT replace_first_copy( const SequenceT& Input, const Collection1T& Search, const Collection2T& 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 Collection1T, typename Collection2T> inline void replace_first( SequenceT& Input, const Collection1T& Search, const Collection2T& 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 Collection1T, typename Collection2T, typename Collection3T> inline OutputIteratorT ireplace_first_copy( OutputIteratorT Output, const Collection1T& Input, const Collection2T& Search, const Collection3T& 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 Collection2T, typename Collection1T> inline SequenceT ireplace_first_copy( const SequenceT& Input, const Collection2T& Search, const Collection1T& 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 Collection1T, typename Collection2T> inline void ireplace_first( SequenceT& Input, const Collection1T& Search, const Collection2T& 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 Collection1T, typename Collection2T, typename Collection3T> inline OutputIteratorT replace_last_copy( OutputIteratorT Output, const Collection1T& Input, const Collection2T& Search, const Collection3T& Format ) { return find_format_copy( Output, Input, last_finder(Search), const_formatter(Format) ); } //! Replace last algorithm /*! \overload */ template<typename SequenceT, typename Collection1T, typename Collection2T> inline SequenceT replace_last_copy( const SequenceT& Input, const Collection1T& Search, const Collection2T& Format ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -