case_conv.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 122 行
HPP
122 行
// Boost string_algo library string_funct.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_CASE_CONV_DETAIL_HPP#define BOOST_STRING_CASE_CONV_DETAIL_HPP#include <boost/algorithm/string/config.hpp>#include <locale>#include <functional>namespace boost { namespace algorithm { namespace detail {// case conversion functors -----------------------------------------------//#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)#pragma warning(push)#pragma warning(disable:4512) //assignment operator could not be generated#endif // a tolower functor template<typename CharT> struct to_lowerF : public std::unary_function<CharT, CharT> { // Constructor to_lowerF( const std::locale& Loc ) : m_Loc( Loc ) {} // Operation CharT operator ()( CharT Ch ) const { #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) return std::tolower( Ch); #else return std::tolower<CharT>( Ch, m_Loc ); #endif } private: const std::locale& m_Loc; }; // a toupper functor template<typename CharT> struct to_upperF : public std::unary_function<CharT, CharT> { // Constructor to_upperF( const std::locale& Loc ) : m_Loc( Loc ) {} // Operation CharT operator ()( CharT Ch ) const { #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) return std::toupper( Ch); #else return std::toupper<CharT>( Ch, m_Loc ); #endif } private: const std::locale& m_Loc; };#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)#pragma warning(pop)#endif// algorithm implementation ------------------------------------------------------------------------- // Transform a range template<typename OutputIteratorT, typename RangeT, typename FunctorT> OutputIteratorT transform_range_copy( OutputIteratorT Output, const RangeT& Input, FunctorT Functor) { return std::transform( ::boost::begin(Input), ::boost::end(Input), Output, Functor); } // Transform a range (in-place) template<typename RangeT, typename FunctorT> void transform_range( const RangeT& Input, FunctorT Functor) { std::transform( ::boost::begin(Input), ::boost::end(Input), ::boost::begin(Input), Functor); } template<typename SequenceT, typename RangeT, typename FunctorT> inline SequenceT transform_range_copy( const RangeT& Input, FunctorT Functor) { return SequenceT( make_transform_iterator( ::boost::begin(Input), Functor), make_transform_iterator( ::boost::end(Input), Functor)); } } // namespace detail } // namespace algorithm} // namespace boost#endif // BOOST_STRING_CASE_CONV_DETAIL_HPP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?