cppannotations/yo/iostreams/ostreamseek.yo
2009-12-28 16:56:23 +00:00

39 lines
1.8 KiB
Text

Although not every tt(ostream) object supports i(repositioning), they usually
do. This means that it is possible to rewrite a section of the stream which
was written earlier. Repositioning is frequently used in database applications
where it must be possible to access the information in the database at random.
The current position can be obtained and modified using the following members:
itemization(
ithtq(tellp)(ios::pos_type tellp())
(the current (absolute) position in the file where the next
write-operation to the stream will take place is returned.)
ithtq(seekp)
(ostream &seekp(ios::off_type step, ios::seekdir org))
(modifies a stream's actual position. The function expects an
ti(off_type) tt(step) representing the number of bytes the current stream
position is moved with respect to tt(org). The tt(step) value
may be negative, zero or positive.
The origin of the step, tt(org) is a value in the
hi(seekdir)tt(ios::seekdir) enumeration. Its values are:
itemization(
ithtq(beg)(ios::beg)
(the stepsize is computed relative to the beginning of the
stream. This value is used by default.
)
ithtq(cur)(ios::cur)
(the stepsize is computed relative to the current position of the
stream (as returned by tt(tellp)).
)
ithtq(end)(ios::end)
(the stepsize is interpreted relative to the current end position
of the stream.)
)
It is OK to
hi(write beyond end of file)hi(seek beyond file boundaries) seek or write
beyond the last file position. Writing bytes to a location beyond endOfFile()
will pad the intermediate bytes with i(ASCII-Z) values: i(null-bytes).
Seeking before tt(ios::beg) raises the hi(fail)tt(ios::fail) flag.
)
)