FreeBSD Manual Pages
std::strstreambuf::seekpos(3) C++ Standard Libarystd::strstreambuf::seekpos(3) NAME std::strstreambuf::seekpos - std::strstreambuf::seekpos Synopsis protected: virtual pos_type seekpos(pos_type sp, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out ); Repositions std::basic_streambuf::gptr and/or std::basic_stream- buf::pptr, if possible, to the position indicated by sp If std::ios_base::in is set in which, attempts to reposition gptr() (the next pointer in the get area). If std::ios_base::out is set in which, at- tempts to reposition pptr() (the next pointer in the put area). If neither bit is set in which, the operation fails. Each next pointer is repositioned as follows: 1) If the next pointer is null, the operation fails 2) Otherwise, the new offset newoff (of type off_type) is determined by calling sp.offset(). If newoff is negative, out of bounds of the buffer, or invalid, the operation fails. 3) Otherwise, the next pointer is assigned as if by gptr() = eback()+newoff or pptr() = pbase()+newoff. Parameters sp - stream position, such as one obtained by seekoff() or seek- pos() defines whether the input sequences, the output sequence, or both are affected. It can be one or a combination of the following constants: which - Constant Explanation in affect the input sequence out affect the output sequence Return value The resultant offset converted to pos_type on success or pos_type(off_type(-1)) on failure. Notes seekpos() is called by std::basic_streambuf::pubseekpos(), which is called by the single-argument versions of std::basic_istream::seekg() and std::basic_ostream::seekp() Example // Run this code #include <strstream> #include <cstring> #include <iostream> struct mybuf : std::strstreambuf { mybuf(const char* str) : std::strstreambuf(str, std::strlen(str)) {} pos_type seekpos(pos_type sp, std::ios_base::openmode which) { std::cout << "Before seekpos(" << sp << "), size of the get area is " << egptr()-eback() << " with " << egptr()-gptr() << " read positions available\n"; pos_type rc = std::strstreambuf::seekpos(sp, which); std::cout << "seekpos() returns " << rc << ".\nAfter the call, " << "size of the get area is " << egptr()-eback() << " with " << egptr()-gptr() << " read positions available\n"; return rc; } }; int main() { mybuf buf("12345"); std::iostream stream(&buf); stream.seekg(2); } Output: Before seekpos(2), size of the get area is 5 with 5 read positions available seekpos() returns 2. After the call, size of the get area is 5 with 3 read positions avail- able See also pubseekpos invokes seekpos() (public member function of std::basic_stream- buf<CharT,Traits>) repositions the next pointer in the input sequence, out- put sequence, or seekpos both using absolute addressing [virtual] (virtual protected member function of std::basic_stringbuf<CharT,Traits,Allocator>) seekpos repositions the file position, using absolute addressing [virtual] (virtual protected member function of std::basic_file- buf<CharT,Traits>) seekoff repositions the next pointer in the input sequence, out- put sequence, or [virtual] both, using relative addressing (virtual protected member function) http://cppreference.com 2022.07.31 std::strstreambuf::seekpos(3)
NAME | Synopsis | Parameters | Return value | Notes | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::strstreambuf::seekpos&sektion=3&manpath=FreeBSD+Ports+15.0>
