Another overloaded ios
member function—operator void *
—converts the stream to a pointer, so it can be tested as 0
(i.e., the null pointer) or nonzero (i.e., any other pointer value). When a pointer value is used as a condition, C++ interprets a null pointer in a condition as the bool
value false
and interprets a non-null pointer as the bool
value true
. If the failbit
or badbit
has been set for the stream, 0
(false
) is returned. The condition in the while
statement of lines 29–33 invokes the operator void *
member function on cin
implicitly. The condition remains true
as long as neither the failbit
nor the badbit
has been set for cin
. Entering the end-of-file indicator sets the failbit
for cin
. The operator void *
function can be used to test an input object for end-of-file, but you can also call member function eof
on the input object.