30 template <
typename T
char>
class basic_omembuf ;
31 using omembuf = basic_omembuf<char> ;
32 using womembuf = basic_omembuf<wchar_t> ;
50template <
typename T
char>
54 using base_type = std::basic_streambuf<Tchar,std::char_traits<Tchar>> ;
60 std::streambuf * setbuf( Tchar * p , std::streamsize n )
override ;
63 std::streampos seekoff( std::streamoff , std::ios_base::seekdir , std::ios_base::openmode )
override ;
68 std::streampos seekpos( std::streampos , std::ios_base::openmode )
override ;
72 std::streamsize xsputn(
const Tchar * p , std::streamsize n )
override ;
84template <
typename T
char>
87 base_type::setp( p , p+n ) ;
90template <
typename T
char>
93 base_type::setp( p , p+n ) ;
97template <
typename T
char>
100 if( off == 0 && way == std::ios_base::cur && ( which & std::ios_base::out ) )
101 return base_type::pptr() - base_type::pbase() ;
106template <
typename T
char>
109 if( pos == 0 && ( which & std::ios_base::out ) )
111 base_type::setp( base_type::pbase() , base_type::epptr() ) ;
120template <
typename T
char>
123 Tchar * start = base_type::pptr() ;
124 if( start ==
nullptr )
return 0 ;
125 std::streamsize space = base_type::epptr() - start ;
126 std::streamsize ncopy = std::min( space , n ) ;
127 std::copy_n( p ,
static_cast<std::size_t
>(ncopy) , start ) ;
128 base_type::pbump(
static_cast<int>(ncopy) ) ;
An output streambuf that writes to a fixed-size char buffer.
basic_omembuf(Tchar *p, std::size_t n)
Constructor.