Partial function prototype
template<typename SequenceT, typename PredicateT> void trim_if(SequenceT & Input, PredicateT IsSpace);template<typename OutputIteratorT, typename RangeT, typename PredicateT> OutputIteratorT trim_copy_if(OutputIteratorT Output, const RangeT & Input, PredicateT IsSpace);template<typename SequenceT, typename PredicateT> SequenceT trim_copy_if(const SequenceT & Input, PredicateT IsSpace);template<typename SequenceT, typename PredicateT> void trim_left_if(SequenceT & Input, PredicateT IsSpace);template<typename OutputIteratorT, typename RangeT, typename PredicateT> OutputIteratorT trim_left_copy_if(OutputIteratorT Output, const RangeT & Input, PredicateT IsSpace);template<typename SequenceT, typename PredicateT> SequenceT trim_left_copy_if(const SequenceT & Input, PredicateT IsSpace);
Example
Void test_string_trim_if () {STD: String STR = "ABCD! @ # $ % ^ Efghi1234xyz "; STD: String str1 = boost: trim_left_copy_if (STR, boost: is_alnum (); Assert (str1 = "! @ # $ % ^ Efghi1234xyz "); STD: String str2 = boost: trim_right_copy_if (STR, boost: is_alnum (); Assert (str2 =" ABCD! @ # $ % ^ "); STD: String str3 = boost: trim_copy_if (STR, boost: is_alnum (); Assert (str3 = "! @ # $ % ^ "); Boost: trim_left_if (STR, boost: is_alnum (); Assert (STR = "! @ # $ % ^ Efghi1234xyz "); Boost: trim_right_if (STR, boost: is_alnum (); Assert (STR = "! @ # $ % ^ "); // If it is a binary function, you can handle STD: String str2nd (" ### goodbye Chongqing! ###### "); Boost: trim_if (str2nd, bind2nd (STD: equal_to <char> (),'#')); assert (str2nd = "Goodbye Chongqing! "); // Of course, you can use the following method to implement the above function STD: String strany (" ### Hello Fuzhou! ###### "); Boost: trim_if (strany, boost: is_any_of (" # "); Assert (strany =" Hello Fuzhou! ");}