C++ でのファイル行ごとの読み書き

C++C++Beginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験(Lab)では、C++ プログラミング言語を使用して、ファイルを 1 行ずつ読み書きする方法を学びます。ファイルを作成し、それに書き込み、その後、その内容を 1 行ずつ読み取ります。

ファイルの作成とオープン

~/project ディレクトリに、file_io.cpp という名前の C++ ファイルを作成します。このステップでは、example.txt という名前のファイルを作成し、オープンします。

#include <fstream>

int main() {
    // Creating and opening a file
    std::ofstream ofs;
    ofs.open("example.txt", std::ofstream::out | std::ofstream::trunc);
    ofs.close();
    return 0;
}

説明:

  • ofstream は、ファイルへの書き込みを行うためのクラスです。
  • ofs は、ofstream クラスのオブジェクトです。
  • open() メソッドは、ファイルを作成し、オープンするために使用されます。
  • open() メソッドでは、最初の引数は作成するファイルの名前であり、2 番目の引数はファイルを開くモードを指定します。ここでは、out はファイルを書き込み用に開くことを指定し、trunc はファイルが既に存在する場合にファイルを切り捨てることを指定します。

ファイルへの書き込み

このステップでは、example.txt ファイルに書き込みを行います。

#include <fstream>
#include <iostream>
#include <string>

int main() {
    std::ofstream ofs;
    ofs.open("example.txt", std::ofstream::out | std::ofstream::trunc);
    if (ofs.is_open()) {
        std::cout << "Enter text to write to the file (Enter empty line to exit):" << std::endl;
        std::string line;
        do {
            std::getline(std::cin, line);
            if (line.length()) {
                ofs << line << std::endl;
            }
        } while (line.length());
        ofs.close();
    } else {
        std::cerr << "Error in opening the file" << std::endl;
    }
    return 0;
}

説明:

  • std::cout は、ファイルに書き込むテキストを入力するようにユーザーに求めるメッセージをコンソールに表示するために使用されます。
  • std::getline() は、ユーザー入力を 1 行ずつ読み取り、line 変数に格納するために使用されます。
  • if (line.length()) は、ユーザーがテキストを入力したかどうかを確認するために使用されます。ユーザーがテキストを入力していない場合、ループは終了します。
  • ofs << line << std::endl; は、ユーザー入力を改行文字を付けてファイルに書き込むために使用されます。
  • std::cerr は、ファイルを開くことができない場合に、エラーメッセージをコンソールに表示するために使用されます。

このプログラムを実行するには、~/project ディレクトリに移動し、次のコマンドを実行します。

g++ file_io.cpp -o file_io && ./file_io

このプログラムは、ユーザーにファイルに書き込むテキストを入力するように促し、ユーザー入力をファイルに書き込みます。

ファイルからの読み込み

このステップでは、example.txt ファイルの内容を読み込みます。

#include <fstream>
#include <iostream>
#include <string>

int main() {
    std::ifstream ifs;
    ifs.open("example.txt");
    if (ifs.is_open()) {
        std::cout << "Contents of the file:" << std::endl;
        std::string line;
        while (std::getline(ifs, line)) {
            std::cout << line << std::endl;
        }
        ifs.close();
    } else {
        std::cerr << "Error in opening the file" << std::endl;
    }
    return 0;
}

説明:

  • std::ifstream は、ファイルから読み込みを行うためのクラスです。
  • ifs は、ifstream クラスのオブジェクトです。
  • open() メソッドは、既存のファイルを開くために使用されます。
  • open() メソッドでは、引数は開くファイルの名前です。
  • std::cout は、ファイルの内容が表示されていることを示すメッセージをコンソールに表示するために使用されます。
  • std::getline() は、ファイルの内容を 1 行ずつ読み込み、line 変数に格納するために使用されます。
  • std::cout << line << std::endl; は、ファイルの内容を 1 行ずつコンソールに表示するために使用されます。

このプログラムを実行するには、~/project ディレクトリに移動し、次のコマンドを実行します。

g++ file_io.cpp -o file_io && ./file_io

このプログラムは、example.txt ファイルの内容をコンソールに表示します。

まとめ

この実験(Lab)では、C++ プログラミング言語を使用して、ファイルの作成、書き込み、および読み込みを行う方法を学びました。 ofstream クラスと ifstream クラスをそれぞれ使用して、ファイルへの書き込みとファイルからの読み込みを行う方法を学びました。また、open() メソッドを使用してファイルを作成および開き、getline() メソッドを使用してファイルの内容を 1 行ずつ読み込む方法も学びました。