Detecting the end of a file in C++ streams

To detect the end of a file in C++ streams, you can make use of the eof() function provided by the std::istream class. This function returns a boolean value of true if the end of the file has been reached, and false otherwise.

Here’s an example that demonstrates how to detect the end of a file in C++ streams:

#include <iostream>
#include <fstream>

int main() {
    std::ifstream inputFile("data.txt");

    if (inputFile.is_open()) {
        std::string line;

        // Read and process each line until the end of the file
        while (!inputFile.eof()) {
            std::getline(inputFile, line);

            // Check if end of file is reached
            if (inputFile.eof()) {
                std::cout << "End of file reached" << std::endl;
            } else {
                // Process the line
                std::cout << "Read line: " << line << std::endl;
            }
        }

        inputFile.close();
    } else {
        std::cout << "Failed to open file" << std::endl;
    }

    return 0;
}

In this example, we create an input file stream object named inputFile to read from a file called data.txt. Inside the while loop, we use std::getline to read each line from the file. After reading a line, we check if the end of the file has been reached using inputFile.eof(). If true, we print a message indicating the end of the file. Otherwise, we process the line.

Remember to include the <iostream> and <fstream> headers to use the necessary input/output stream classes.

Using the eof() function provides a reliable approach to detect the end of a file when working with C++ streams. However, be cautious when using it together with a loop condition since the end-of-file indicator may not be set until an attempt is made to read beyond the end of the file.