【C++】ファイル操作(読み込み・書き込み)の解説
ファイルを読み込む・書き込む方法
C++では、ファイルを読み書きするために、ファイルストリームを使用します。これにより、プログラム内でファイルの内容を操作できます。C++の標準ライブラリには、ファイル入出力のためのクラスが用意されています。主に使うクラスは以下の3つです。
- ifstream – ファイルの読み込みに使用
- ofstream – ファイルへの書き込みに使用
- fstream – 読み書き両方に使用
ファイルを読み書きする際は、ファイルを開く処理と閉じる処理を忘れないようにしましょう。ファイル操作は非常に重要な部分なので、ファイルが正しく開けなかった場合に備えてエラーチェックも行います。
ファイルストリームの使い方
C++のファイルストリームは、標準ライブラリのヘッダー「#include <fstream>
」で利用できます。これを使うことで、ファイルを簡単に操作できます。ファイルの読み書きを行う基本的な流れは、以下の通りです。
- ファイルストリームを作成する。
- ファイルを開く。
- ファイルを読み書きする。
- ファイルを閉じる。
ファイルを開く
ファイルを開くには、ifstream
やofstream
、またはfstream
を使います。ファイルが存在しない場合やアクセスできない場合、エラーチェックが必要です。
ファイルを閉じる
ファイルを操作した後は、必ずファイルを閉じる必要があります。これを忘れると、プログラムが予期しない動作をすることがあります。ファイルを閉じるには、close()
メソッドを使用します。
実際のコード例
ここでは、簡単なファイル操作の例をいくつか紹介します。まずはファイルに書き込む基本的なコード例です。
ファイルへの書き込み
#include <iostream>
#include <fstream>
int main() {
// ofstreamを使ってファイルに書き込む
std::ofstream outFile("example.txt");
if (outFile.is_open()) {
outFile << "Hello, C++!" << std::endl;
outFile << "ファイルに書き込みました。" << std::endl;
outFile.close(); // ファイルを閉じる
} else {
std::cout << "ファイルを開けませんでした。" << std::endl;
}
return 0;
}
このプログラムでは、example.txt
という名前のファイルに文字列を書き込んでいます。ファイルが開けた場合、内容を書き込んだ後に必ずファイルを閉じます。
ファイルの読み込み
#include <iostream>
#include <fstream>
int main() {
std::ifstream inFile("example.txt");
if (inFile.is_open()) {
std::string line;
while (std::getline(inFile, line)) {
std::cout << line << std::endl;
}
inFile.close(); // ファイルを閉じる
} else {
std::cout << "ファイルを開けませんでした。" << std::endl;
}
return 0;
}
上記のコードでは、example.txt
というファイルを開き、その内容を1行ずつ読み取って表示しています。読み込んだ行はstd::getline
を使って処理します。
読み書きの両方を行う
#include <iostream>
#include <fstream>
int main() {
// fstreamを使って読み書き両方を行う
std::fstream file("example.txt", std::ios::in | std::ios::out);
if (file.is_open()) {
std::string line;
// 既存の内容を読み込む
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
// ファイルの終わりに移動してから書き込む
file.clear(); // EOFフラグをクリア
file << "新しい行を追加しました。" << std::endl;
file.close(); // ファイルを閉じる
} else {
std::cout << "ファイルを開けませんでした。" << std::endl;
}
return 0;
}
fstream
を使用すると、ファイルを読み込み、同時に書き込むこともできます。ファイルの読み込みが終わった後、ファイルポインタをファイルの末尾に移動させてから書き込みます。clear()
メソッドを使用して、EOF(End of File)フラグをクリアすることが重要です。