write
The two overloads of the function template write provide a uniform interface for writing a sequence of characters to a Sink or OutputFilter.
The following code illustrates the use of the function write in the definition of an OutputFilter which reverses its controlled sequence.
#include <algorithm> // reverse #include <vector> #include <boost/iostreams/concepts.hpp> // output_filter #include <boost/iostreams/operations.hpp> // write using namespace std; using namespace boost::io; struct reversing_filter : public multichar_output_filter { template<typename Sink> std::streamsize write(Sink& snk, const char* s, streamsize n) { data.insert(data.end(), s, s + n); return n; } template<typename Sink> void close(Sink& snk) { std::reverse(data.begin(), data.end()); boost::iostreams::write(&data[0], (streamsize) data.size()); data.clear(); } std::vector<char> data; };
<boost/iostreams/operations.hpp><boost/iostreams/write.hpp>Attempts to write a sequence of characters to a given instance of the template parameter T, returning the number of characters written.
namespace boost { namespace iostreams { template<typename T> std::streamsize write( T& t, const typename char_type_of<T>::type* s, std::streamsize n ); template<typename T, typename Sink> std::streamsize write( T& t, Sink& snk, const typename char_type_of<T>::type* s, std::streamsize n ); } } // End namespace boost::io
| T | - | For the first overload, a model of Sink. For the second overload, a model of OutputFilter. |
| Sink | - | A model of Sink with the same character type as T whose mode refines that of T.
|
| t | - | An instance of T |
| s | - | A buffer containing characters to write |
| n | - | The number of characters to write |
| snk | - | An instance of Sink.
|
template<typename T> std::streamsize write( T& t, const typename char_type_of<T>::type* s, std::streamsize n );
The semantics of write depends on the category of T as follows:
category_of<T>::type | semantics |
|---|---|
convertible to ostream_tag |
returns t.rdbuf()->sputn(s, n) |
convertible to streambuf_tag but not to ostream_tag |
returns t.sputn(s, n) |
| otherwise | returns t.write(s, n) |
template<typename T, typename Sink> std::streamsize write( T& t, Sink& snk, const typename char_type_of<T>::type* s, std::streamsize n );
The semantics of write depends on the category of T as follows:
category_of<T>::type | semantics |
|---|---|
convertible to multichar_tag |
returns t.write(snk, s, n) |
| otherwise | Attempts to write n characters from s by invoking t.put(snk, s[m]) for each value m in the interval [0, n), halting if put returns false. Returns the number of characters written. |
© Copyright 2008 CodeRage, LLC
© Copyright 2004-2007 Jonathan Turkanis
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)