// Boost string_algo library erase.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_ERASE_HPP | |
#define BOOST_STRING_ERASE_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> | |
/*! \file | |
Defines various erase algorithms. Each algorithm removes | |
part(s) of the input according to a searching criteria. | |
*/ | |
namespace boost { | |
namespace algorithm { | |
// erase_range -------------------------------------------------------// | |
//! Erase range algorithm | |
/*! | |
Remove the given range from 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 SearchRange A range in the input to be removed | |
\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> | |
inline OutputIteratorT erase_range_copy( | |
OutputIteratorT Output, | |
const RangeT& Input, | |
const iterator_range< | |
BOOST_STRING_TYPENAME | |
range_const_iterator<RangeT>::type>& SearchRange ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::range_finder(SearchRange), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase range algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT> | |
inline SequenceT erase_range_copy( | |
const SequenceT& Input, | |
const iterator_range< | |
BOOST_STRING_TYPENAME | |
range_const_iterator<SequenceT>::type>& SearchRange ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::range_finder(SearchRange), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase range algorithm | |
/*! | |
Remove the given range from the input. | |
The input sequence is modified in-place. | |
\param Input An input sequence | |
\param SearchRange A range in the input to be removed | |
*/ | |
template<typename SequenceT> | |
inline void erase_range( | |
SequenceT& Input, | |
const iterator_range< | |
BOOST_STRING_TYPENAME | |
range_iterator<SequenceT>::type>& SearchRange ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::range_finder(SearchRange), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_first --------------------------------------------------------// | |
//! Erase first algorithm | |
/*! | |
Remove the first occurrence of the substring from 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 string | |
\param Search A substring to be searched for | |
\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 erase_first_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::first_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase first algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT erase_first_copy( | |
const SequenceT& Input, | |
const RangeT& Search ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::first_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase first algorithm | |
/*! | |
Remove the first occurrence of the substring from the input. | |
The input sequence is modified in-place. | |
\param Input An input string | |
\param Search A substring to be searched for. | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void erase_first( | |
SequenceT& Input, | |
const RangeT& Search ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::first_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_first ( case insensitive ) ------------------------------------// | |
//! Erase first algorithm ( case insensitive ) | |
/*! | |
Remove the first occurrence of the substring from the input. | |
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 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> | |
inline OutputIteratorT ierase_first_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::first_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase first algorithm ( case insensitive ) | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT ierase_first_copy( | |
const SequenceT& Input, | |
const RangeT& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::first_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase first algorithm ( case insensitive ) | |
/*! | |
Remove the first occurrence of the substring from the input. | |
The input sequence is modified in-place. Searching is case insensitive. | |
\param Input An input string | |
\param Search A substring to be searched for | |
\param Loc A locale used for case insensitive comparison | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void ierase_first( | |
SequenceT& Input, | |
const RangeT& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::first_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_last --------------------------------------------------------// | |
//! Erase last algorithm | |
/*! | |
Remove the last occurrence of the substring from 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 string | |
\param Search A substring to be searched for. | |
\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 erase_last_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::last_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase last algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT erase_last_copy( | |
const SequenceT& Input, | |
const RangeT& Search ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::last_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase last algorithm | |
/*! | |
Remove the last occurrence of the substring from the input. | |
The input sequence is modified in-place. | |
\param Input An input string | |
\param Search A substring to be searched for | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void erase_last( | |
SequenceT& Input, | |
const RangeT& Search ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::last_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_last ( case insensitive ) ------------------------------------// | |
//! Erase last algorithm ( case insensitive ) | |
/*! | |
Remove the last occurrence of the substring from the input. | |
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 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> | |
inline OutputIteratorT ierase_last_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::last_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase last algorithm ( case insensitive ) | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT ierase_last_copy( | |
const SequenceT& Input, | |
const RangeT& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::last_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase last algorithm ( case insensitive ) | |
/*! | |
Remove the last occurrence of the substring from the input. | |
The input sequence is modified in-place. Searching is case insensitive. | |
\param Input An input string | |
\param Search A substring to be searched for | |
\param Loc A locale used for case insensitive comparison | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void ierase_last( | |
SequenceT& Input, | |
const RangeT& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::last_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_nth --------------------------------------------------------------------// | |
//! Erase nth algorithm | |
/*! | |
Remove the Nth occurrence of the substring 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 string | |
\param Search A substring to be searched for | |
\param Nth An index of the match to be replaced. The index is 0-based. | |
For negative N, matches are counted from the end of 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 erase_nth_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search, | |
int Nth ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::nth_finder(Search, Nth), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase nth algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT erase_nth_copy( | |
const SequenceT& Input, | |
const RangeT& Search, | |
int Nth ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::nth_finder(Search, Nth), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase nth algorithm | |
/*! | |
Remove the Nth occurrence of the substring in the input. | |
The input sequence is modified in-place. | |
\param Input An input string | |
\param Search A substring to be searched for. | |
\param Nth An index of the match to be replaced. The index is 0-based. | |
For negative N, matches are counted from the end of string. | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void erase_nth( | |
SequenceT& Input, | |
const RangeT& Search, | |
int Nth ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::nth_finder(Search, Nth), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_nth ( case insensitive ) ---------------------------------------------// | |
//! Erase nth algorithm ( case insensitive ) | |
/*! | |
Remove the Nth occurrence of the substring in the input. | |
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 Nth An index of the match to be replaced. The index is 0-based. | |
For negative N, matches are counted from the end of 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> | |
inline OutputIteratorT ierase_nth_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search, | |
int Nth, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase nth algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT ierase_nth_copy( | |
const SequenceT& Input, | |
const RangeT& Search, | |
int Nth, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), | |
empty_formatter(Input) ); | |
} | |
//! Erase nth algorithm | |
/*! | |
Remove the Nth occurrence of the substring in the input. | |
The input sequence is modified in-place. Searching is case insensitive. | |
\param Input An input string | |
\param Search A substring to be searched for. | |
\param Nth An index of the match to be replaced. The index is 0-based. | |
For negative N, matches are counted from the end of string. | |
\param Loc A locale used for case insensitive comparison | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void ierase_nth( | |
SequenceT& Input, | |
const RangeT& Search, | |
int Nth, | |
const std::locale& Loc=std::locale() ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_all --------------------------------------------------------// | |
//! Erase all algorithm | |
/*! | |
Remove all the occurrences of the string from 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 Search A substring to be searched for. | |
\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 erase_all_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search ) | |
{ | |
return ::boost::algorithm::find_format_all_copy( | |
Output, | |
Input, | |
::boost::algorithm::first_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase all algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT erase_all_copy( | |
const SequenceT& Input, | |
const RangeT& Search ) | |
{ | |
return ::boost::algorithm::find_format_all_copy( | |
Input, | |
::boost::algorithm::first_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase all algorithm | |
/*! | |
Remove all the occurrences of the string from the input. | |
The input sequence is modified in-place. | |
\param Input An input string | |
\param Search A substring to be searched for. | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void erase_all( | |
SequenceT& Input, | |
const RangeT& Search ) | |
{ | |
::boost::algorithm::find_format_all( | |
Input, | |
::boost::algorithm::first_finder(Search), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_all ( case insensitive ) ------------------------------------// | |
//! Erase all algorithm ( case insensitive ) | |
/*! | |
Remove all the occurrences of the string from the input. | |
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 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> | |
inline OutputIteratorT ierase_all_copy( | |
OutputIteratorT Output, | |
const Range1T& Input, | |
const Range2T& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_all_copy( | |
Output, | |
Input, | |
::boost::algorithm::first_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase all algorithm ( case insensitive ) | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline SequenceT ierase_all_copy( | |
const SequenceT& Input, | |
const RangeT& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
return ::boost::algorithm::find_format_all_copy( | |
Input, | |
::boost::algorithm::first_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
//! Erase all algorithm ( case insensitive ) | |
/*! | |
Remove all the occurrences of the string from the input. | |
The input sequence is modified in-place. Searching is case insensitive. | |
\param Input An input string | |
\param Search A substring to be searched for. | |
\param Loc A locale used for case insensitive comparison | |
*/ | |
template<typename SequenceT, typename RangeT> | |
inline void ierase_all( | |
SequenceT& Input, | |
const RangeT& Search, | |
const std::locale& Loc=std::locale() ) | |
{ | |
::boost::algorithm::find_format_all( | |
Input, | |
::boost::algorithm::first_finder(Search, is_iequal(Loc)), | |
::boost::algorithm::empty_formatter(Input) ); | |
} | |
// erase_head --------------------------------------------------------------------// | |
//! Erase head algorithm | |
/*! | |
Remove the head from the input. The head is a prefix of a sequence of given size. | |
If the sequence is shorter then required, the whole string is | |
considered to be the head. 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 N Length of the head. | |
For N>=0, at most N characters are extracted. | |
For N<0, size(Input)-|N| characters are extracted. | |
\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> | |
inline OutputIteratorT erase_head_copy( | |
OutputIteratorT Output, | |
const RangeT& Input, | |
int N ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::head_finder(N), | |
::boost::algorithm::empty_formatter( Input ) ); | |
} | |
//! Erase head algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT> | |
inline SequenceT erase_head_copy( | |
const SequenceT& Input, | |
int N ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::head_finder(N), | |
::boost::algorithm::empty_formatter( Input ) ); | |
} | |
//! Erase head algorithm | |
/*! | |
Remove the head from the input. The head is a prefix of a sequence of given size. | |
If the sequence is shorter then required, the whole string is | |
considered to be the head. The input sequence is modified in-place. | |
\param Input An input string | |
\param N Length of the head | |
For N>=0, at most N characters are extracted. | |
For N<0, size(Input)-|N| characters are extracted. | |
*/ | |
template<typename SequenceT> | |
inline void erase_head( | |
SequenceT& Input, | |
int N ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::head_finder(N), | |
::boost::algorithm::empty_formatter( Input ) ); | |
} | |
// erase_tail --------------------------------------------------------------------// | |
//! Erase tail algorithm | |
/*! | |
Remove the tail from the input. The tail is a suffix of a sequence of given size. | |
If the sequence is shorter then required, the whole string is | |
considered to be the tail. | |
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 N Length of the tail. | |
For N>=0, at most N characters are extracted. | |
For N<0, size(Input)-|N| characters are extracted. | |
\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> | |
inline OutputIteratorT erase_tail_copy( | |
OutputIteratorT Output, | |
const RangeT& Input, | |
int N ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Output, | |
Input, | |
::boost::algorithm::tail_finder(N), | |
::boost::algorithm::empty_formatter( Input ) ); | |
} | |
//! Erase tail algorithm | |
/*! | |
\overload | |
*/ | |
template<typename SequenceT> | |
inline SequenceT erase_tail_copy( | |
const SequenceT& Input, | |
int N ) | |
{ | |
return ::boost::algorithm::find_format_copy( | |
Input, | |
::boost::algorithm::tail_finder(N), | |
::boost::algorithm::empty_formatter( Input ) ); | |
} | |
//! Erase tail algorithm | |
/*! | |
Remove the tail from the input. The tail is a suffix of a sequence of given size. | |
If the sequence is shorter then required, the whole string is | |
considered to be the tail. The input sequence is modified in-place. | |
\param Input An input string | |
\param N Length of the tail | |
For N>=0, at most N characters are extracted. | |
For N<0, size(Input)-|N| characters are extracted. | |
*/ | |
template<typename SequenceT> | |
inline void erase_tail( | |
SequenceT& Input, | |
int N ) | |
{ | |
::boost::algorithm::find_format( | |
Input, | |
::boost::algorithm::tail_finder(N), | |
::boost::algorithm::empty_formatter( Input ) ); | |
} | |
} // namespace algorithm | |
// pull names into the boost namespace | |
using algorithm::erase_range_copy; | |
using algorithm::erase_range; | |
using algorithm::erase_first_copy; | |
using algorithm::erase_first; | |
using algorithm::ierase_first_copy; | |
using algorithm::ierase_first; | |
using algorithm::erase_last_copy; | |
using algorithm::erase_last; | |
using algorithm::ierase_last_copy; | |
using algorithm::ierase_last; | |
using algorithm::erase_nth_copy; | |
using algorithm::erase_nth; | |
using algorithm::ierase_nth_copy; | |
using algorithm::ierase_nth; | |
using algorithm::erase_all_copy; | |
using algorithm::erase_all; | |
using algorithm::ierase_all_copy; | |
using algorithm::ierase_all; | |
using algorithm::erase_head_copy; | |
using algorithm::erase_head; | |
using algorithm::erase_tail_copy; | |
using algorithm::erase_tail; | |
} // namespace boost | |
#endif // BOOST_ERASE_HPP |