I'm trying to do something like this:
for (std::streampos Position = 0; Position < 123; Position++)
{
// Use Position to access something...
}
However, it appears that std::streampos
does not have operator++
overloaded.
Trying to use Position = (Position + 1)
results in the following error:
ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
Is there any workaround for this, or do I have to rely on long unsigned int
being big enough for files?
Try a std::streamoff
, which represents an offset in a stream. It supports both pre- and post increment/decrement operators.
The underlying type is implementation defined, but must be able to be consistently converted to both streamsize and fpos (thus, to streampos too)
Edit to Maxpm's comment: You can apply the streamoff
to anywhere, be it ios::beg
or an arbitary streampos
. Apply it to ios::beg
and it behaves like a normal streampos
. Apply it to a streampos
and you got streampos+streamoff
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With