I have a loop that reads each line in a file using getline():
istream is; string line; while (!getline(is, line).eof()) { // ... }
I noticed that calling getline() like this also seems to work:
while (getline(is, line))
What’s going on here? getline() returns a stream reference. Is it being converted to a pointer somehow? Is this actually a good practice or should I stick to the first form?
The
istreamreturned bygetline()is having its operatorvoid*()method implicitly called, which returns whether the stream has run into an error. As such it’s making more checks than a call toeof().