seek
    The function template seek is used by the Iostreams library to perform random access withing a sequence controlled by a Device.
<boost/iostreams/operations.hpp><boost/iostreams/seek.hpp>T, returning the resulting stream position.
namespace boost { namespace iostreams { template<typename T> std::streampos seek( T&, stream_offset off, std::ios_base::seekdir way, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out ); } } // End namespace boost::io
| T | - | A model of one of the Device concepts which allows random access. | 
| off | - | A stream_offsetindicating the number of characters by which the appropriate reading or writing heads should be advanced. The initial position is determined by the parameter way. | 
| way | - | Determines the initial position to which the offset off is applied, as follows: 
 | 
| which | - | Determines whether the reading head, the writing head or both are repositioned. | 
The semantics of seek depends on the category of T as follows:
| category_of<T>::type | semantics | 
|---|---|
| convertible to istream_tagorostream_tag | returns: 
 | 
| convertible to streambuf_tag | returns: 
 | 
| convertible to input_seekablebut not tooutput_seekable | returns t.seek(off, way) | 
| convertible to output_seekablebut not toinput_seekable | returns t.seek(off, way) | 
| convertible to dual_seekableor tobidirectional_seekable | returns t.seek(off, way, which) | 
| convertible to seekable | returns t.seek(off, way) | 
| otherwise | compile-time error | 
In short:
T is a standard stream or stream buffer type, delegates to std::basic_streambuf::pubseekoff or std::basic_streambuf::pubseekpos, as appropriate.
    T allows only one reading head, delegates to a member function seek which takes a stream_offset and a seekdir but no openmode.
    T allows random access with two reading heads, delegates to a member function seek which takes a stream_offset, a seekdir and an openmode.
    seek is a compile-time error.
© 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)