wrap_stringstream.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 165 行
HPP
165 行
// (C) Copyright Gennadiy Rozental 2002-2008.// 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/libs/test for the library home page.//// File : $RCSfile$//// Version : $Revision: 49312 $//// Description : wraps strstream and stringstream (depends with one is present)// to provide the unified interface// ***************************************************************************#ifndef BOOST_WRAP_STRINGSTREAM_HPP_071894GER#define BOOST_WRAP_STRINGSTREAM_HPP_071894GER// Boost.Test#include <boost/test/detail/config.hpp>// STL#ifdef BOOST_NO_STRINGSTREAM#include <strstream> // for std::ostrstream#else#include <sstream> // for std::ostringstream#endif // BOOST_NO_STRINGSTREAM#include <boost/test/detail/suppress_warnings.hpp>//____________________________________________________________________________//namespace boost {// ************************************************************************** //// ************** basic_wrap_stringstream ************** //// ************************************************************************** //template<typename CharT>class basic_wrap_stringstream {public:#if defined(BOOST_CLASSIC_IOSTREAMS) typedef std::ostringstream wrapped_stream;#elif defined(BOOST_NO_STRINGSTREAM) typedef std::basic_ostrstream<CharT> wrapped_stream;#else typedef std::basic_ostringstream<CharT> wrapped_stream;#endif // BOOST_NO_STRINGSTREAM // Access methods basic_wrap_stringstream& ref(); wrapped_stream& stream(); std::basic_string<CharT> const& str();private: // Data members wrapped_stream m_stream; std::basic_string<CharT> m_str;};//____________________________________________________________________________//template <typename CharT, typename T>inline basic_wrap_stringstream<CharT>&operator<<( basic_wrap_stringstream<CharT>& targ, T const& t ){ targ.stream() << t; return targ;}//____________________________________________________________________________//template <typename CharT>inline typename basic_wrap_stringstream<CharT>::wrapped_stream&basic_wrap_stringstream<CharT>::stream(){ return m_stream;}//____________________________________________________________________________//template <typename CharT>inline basic_wrap_stringstream<CharT>&basic_wrap_stringstream<CharT>::ref(){ return *this;}//____________________________________________________________________________//template <typename CharT>inline std::basic_string<CharT> const&basic_wrap_stringstream<CharT>::str(){#ifdef BOOST_NO_STRINGSTREAM m_str.assign( m_stream.str(), m_stream.pcount() ); m_stream.freeze( false );#else m_str = m_stream.str();#endif return m_str;}//____________________________________________________________________________//template <typename CharT>inline basic_wrap_stringstream<CharT>&operator<<( basic_wrap_stringstream<CharT>& targ, basic_wrap_stringstream<CharT>& src ){ targ << src.str(); return targ;}//____________________________________________________________________________//#if BOOST_TEST_USE_STD_LOCALE template <typename CharT>inline basic_wrap_stringstream<CharT>&operator<<( basic_wrap_stringstream<CharT>& targ, std::ios_base& (BOOST_TEST_CALL_DECL *man)(std::ios_base&) ){ targ.stream() << man; return targ;}//____________________________________________________________________________//template<typename CharT,typename Elem,typename Tr>inline basic_wrap_stringstream<CharT>&operator<<( basic_wrap_stringstream<CharT>& targ, std::basic_ostream<Elem,Tr>& (BOOST_TEST_CALL_DECL *man)(std::basic_ostream<Elem, Tr>&) ){ targ.stream() << man; return targ;}//____________________________________________________________________________//template<typename CharT,typename Elem,typename Tr>inline basic_wrap_stringstream<CharT>&operator<<( basic_wrap_stringstream<CharT>& targ, std::basic_ios<Elem, Tr>& (BOOST_TEST_CALL_DECL *man)(std::basic_ios<Elem, Tr>&) ){ targ.stream() << man; return targ;}//____________________________________________________________________________//#endif// ************************************************************************** //// ************** wrap_stringstream ************** //// ************************************************************************** //typedef basic_wrap_stringstream<char> wrap_stringstream;typedef basic_wrap_stringstream<wchar_t> wrap_wstringstream;} // namespace boost//____________________________________________________________________________//#include <boost/test/detail/enable_warnings.hpp>#endif // BOOST_WRAP_STRINGSTREAM_HPP_071894GER
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?