D
Duck Dodgers
This was originally posted in comp.std.c++, and never received any
replies, so I'll be rude and cross-post it here because I really am
interested in the answer.
I see this idiom a LOT for reading until end-of-file:
while ( cin >> var ) { /* ... */ }
while ( getline ( cin, s ) ) { /* ... */ }
Is this guaranteed to work? The standard makes no mention of operator
void* looking at eofbit at any point. The way I'm reading the standard,
it looks like if no characters are read then failbit is set, which
operator void* uses. The idiom would work under that interpretation
because if eofbit is set then no characters are read and failbit is set
shortly thereafter, causing the loop to terminate because operator
void* relies on fail().
There's also a clause about sentry that suggests both failbit and
eofbit are set if end-of-file is reached (section 27.6.1.1.2), but I'm
not quite sure that's applicable to my question.
Thanks for your time.
replies, so I'll be rude and cross-post it here because I really am
interested in the answer.
I see this idiom a LOT for reading until end-of-file:
while ( cin >> var ) { /* ... */ }
while ( getline ( cin, s ) ) { /* ... */ }
Is this guaranteed to work? The standard makes no mention of operator
void* looking at eofbit at any point. The way I'm reading the standard,
it looks like if no characters are read then failbit is set, which
operator void* uses. The idiom would work under that interpretation
because if eofbit is set then no characters are read and failbit is set
shortly thereafter, causing the loop to terminate because operator
void* relies on fail().
There's also a clause about sentry that suggests both failbit and
eofbit are set if end-of-file is reached (section 27.6.1.1.2), but I'm
not quite sure that's applicable to my question.
Thanks for your time.