public member function
<ostream> <iostream>
Get position in output sequence
Returns the position of the current character in the output stream.
Internally, if member
fail returns
true
, the function returns
-1
.
Otherwise, it returns
rdbuf()->pubseekoff(0,cur,out)
.
Internally, the function accesses the output sequence by first constructing a
sentry object without evaluating it. Then, if member
fail returns
true
, the function returns
-1
.
Otherwise, it returns
rdbuf()->pubseekoff(0,cur,out)
.
Finally, it destroys the
sentry object before returning.
Notice that the function will work even if the eofbit flag is set before the call.
Return Value
The current position in the stream.
If either the stream buffer associated to the stream does not support the operation, or if it fails, the function returns -1
.
streampos is an fpos type (it can be converted to/from integral types).
Errors are signaled by modifying the internal state flags:
flag | error |
eofbit | - |
failbit | May be set if the construction of sentry failed. |
badbit | Error on stream (such as when this function catches an exception thrown by an internal operation).
When set, the integrity of the stream may have been affected. |
Multiple flags may be set by a single operation.
If the operation sets an internal state flag that was registered with member exceptions, the function throws an exception of member type failure.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
// position in output stream
#include <fstream> // std::ofstream
int main () {
std::ofstream outfile;
outfile.open ("test.txt");
outfile.write ("This is an apple",16);
long pos = outfile.tellp();
outfile.seekp (pos-7);
outfile.write (" sam",4);
outfile.close();
return 0;
}
| |
In this example, tellp is used to get the position in the stream after the writing operation. The pointer is then moved back 7 characters to modify the file at that position, so the final content of the file is:
Data races
Modifies the stream object.
Concurrent access to the same stream object may cause data races.
Exception safety
Basic guarantee: if an exception is thrown, the object is in a valid state.
It throws an exception of member type failure if the resulting error state flag is not goodbit and member exceptions was set to throw for that state.
Any exception thrown by an internal operation is caught and handled by the function, setting badbit. If badbit was set on the last call to exceptions, the function rethrows the caught exception.
See also
- ostream::seekp
- Set position in output sequence (public member function
)
- istream::tellg
- Get position in input sequence (public member function
)