Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Reading and Writing Files in C++

Introduction

File handling in C++ is essential for various applications where data persistence is required. It allows programs to read from and write to files, enabling data storage and retrieval. This tutorial will cover the basics of reading and writing files in C++ using the standard library.

Including Required Headers

To perform file operations in C++, you need to include the <fstream> header, which provides facilities for file-based input and output operations.

#include <fstream>

Opening a File

Files in C++ can be opened using the ifstream class for reading and the ofstream class for writing. You can also use the fstream class for both reading and writing. Here is an example of how to open a file:

std::ifstream inFile("example.txt");
std::ofstream outFile("output.txt");

Reading from a File

Once a file is opened, you can read from it using various methods such as the extraction operator (>>) or the getline function. Below is an example:

std::ifstream inFile("example.txt");
std::string line;
while (std::getline(inFile, line)) {
    std::cout << line << std::endl;
}

Writing to a File

Writing to a file is similar to reading, but you use the ofstream class and the insertion operator (<<). Here is an example:

std::ofstream outFile("output.txt");
outFile << "Hello, World!" << std::endl;
outFile << "This is a test." << std::endl;

Checking for Errors

It is important to check whether file operations succeed. You can use the is_open method to verify if a file was successfully opened, and the fail method to check for errors during file operations.

std::ifstream inFile("example.txt");
if (!inFile.is_open()) {
    std::cerr << "Error opening file" << std::endl;
    return 1;
}

std::ofstream outFile("output.txt");
if (outFile.fail()) {
    std::cerr << "Error creating file" << std::endl;
    return 1;
}

Closing a File

It is good practice to close files after performing operations to free resources. This can be done using the close method.

inFile.close();
outFile.close();

Example Program

Here is a comprehensive example that demonstrates reading from a file and writing to another file in C++:

#include <iostream>
#include <fstream>

int main() {
    std::ifstream inFile("example.txt");
    if (!inFile.is_open()) {
        std::cerr << "Error opening input file" << std::endl;
        return 1;
    }

    std::ofstream outFile("output.txt");
    if (outFile.fail()) {
        std::cerr << "Error creating output file" << std::endl;
        return 1;
    }

    std::string line;
    while (std::getline(inFile, line)) {
        outFile << line << std::endl;
    }

    inFile.close();
    outFile.close();

    return 0;
}