Difference between casting ifstream to bool and using ifstream::is_open()
c++, casting, fstream, ifstream, ofstream
Solution
No. `is_open` checks only whether there is an associated file, while a cast to `bool` also checks whether the file is ready for I/O operations (e.g. the stream is in a good state) (since C++11).
`is_open`
Checks if the file stream has an associated file.
`std::basic_ios::operator bool`
Returns true if the stream has no errors occurred and is ready of I/O operations. Specifically, returns `!fail()`.
Problem
Maybe a dummy question, but I need a clear answer to it. Is there any difference at all in the return of any of those functions ``` int FileExists(const std::string& filename) { ifstream file(filename.c_str()); return !!file; } int FileExists(const std::string& filename) { ifstream file(filename.c_str()); return file.is_open(); } ``` So in other words, my question is: does casting the `fstream` to `bool` give exactly the same result as `fstream::is_open()`?