read
    The two overloads of the function template read provide a uniform interface for reading a sequence of characters from a Source or InputFilter. 
    
    The following code illustrates the use of the function read in the definition of a Multi-Character InputFilter.
#include <ctype.h> // tolower #include <boost/iostreams/concepts.hpp> // multichar_input_filter #include <boost/iostreams/operations.hpp> // read using namespace std; namespace io = boost::iostreams; struct tolower_filter : public io::multichar_input_filter { template<typename Source> streamsize read(Source& src, char* s, streamsize n) { streamsize result; if ((result = io::read(src, s, n)) == -1) return -1; // EOF for (streamsize z = 0; z < result; ++z) s[z] = tolower((unsigned char) s[z]); return result; } };
<boost/iostreams/operations.hpp><boost/iostreams/read.hpp>
    Reads a sequence of characters from a given instance of the template parameter T, returning the number of characters read, or -1 to indicate end-of-sequence.
namespace boost { namespace iostreams { template<typename T> std::streamsize read( T& t, typename char_type_of<T>::type* s, std::streamsize n ); template<typename T, typename Source> std::streamsize read( T& t, Source& src, typename char_type_of<T>::type* s, std::streamsize n ); } } // End namespace boost::io
| T | - | For the first overload, a model of Source or a standard input stream or stream buffer type. For the second overload, a model of InputFilter. | 
| Source | - | An indirect model of Source with the same character type as Twhose mode refines that ofT.Sourcemust also model Peekable. | 
| t | - | An instance of the Filter or Device type T | 
| s | - | The buffer into which characters should be read | 
| n | - | The maximum number of characters to read | 
| src | - | An instance of Source | 
template<typename T> std::streamsize read( T& t, typename char_type_of<T>::type* s, std::streamsize n );
The semantics of read depends on the category of T as follows:
| category_of<T>::type | semantics | 
|---|---|
| convertible to istream_tag | invokes t.read(s, n)and returnst.gcount() | 
| convertible to streambuf_tagbut not toistream_tag | returns t.sgetn(s, n) | 
| not convertible to direct_tag | returns t.read(s, n) | 
| otherwise | compile-time error | 
template<typename T> std::streamsize read( T& t, Source& src, typename char_type_of<T>::type* s, std::streamsize n );
The semantics of read depends on the category of T as follows:
| category_of<T>::type | semantics | 
|---|---|
| convertible to multichar_tag | returns t.read(src, s, n) | 
| otherwise | reads up to ncharacters intosby invokingt.get(src)repeatedly, halting iftraits_typre::eofortraits_type::would_blockis returned, wheretraits_typeisboost::iostreams::char_traits<Source>. Returns the number of characters read, or-1to indicate end-of-sequence. | 
© 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)