この記事では、C++の基本的な入出力とファイル操作について学びます。これらの知識は、データの読み書きやエラーハンドリングなど、プログラムが外部の世界とやり取りするための重要な手段です。
以下の内容を解説します。
- ファイルストリーム(
ifstream
、ofstream
)を使用して、C++でファイルを開く、データを読み書きする、そしてファイルを閉じる、という基本的なステップ - ファイル操作にはさまざまなエラーが伴う可能性があり、それらのエラーを適切に処理するためのエラーハンドリングの技術
ファイル操作を学ぶことで、大量のデータを効率的に処理したり、ユーザーの入力を保存したりすることが可能になります。
プログラムを実行するための環境構築がまだの方は「C++を実行するための環境構築|初心者でも簡単!(Windows)」をご覧ください。
ファイルストリームとは?(ifstream, ofstream)
ファイルストリームとは、C++でファイルを読み書きするためのデータストリームです。ifstream
は入力(読み込み)用、ofstream
は出力(書き込み)用です。
ファイルの書き込み
#include <fstream> // ファイル操作に必要なライブラリをインクルード
#include <iostream> // 入出力操作に必要なライブラリをインクルード
int main() {
std::ofstream myfile; // ファイル出力のためのオブジェクトを作成
myfile.open("example.txt"); // "example.txt"という名前のファイルを開く(存在しない場合は新規作成)
myfile << "Writing this to a file.\n"; // ファイルにテキストを書き込む
myfile.close(); // ファイルを閉じる(これは重要!開いたままにしておくと、他のプログラムからアクセスできなくなる可能性がある)
return 0; // プログラムが正常に終了したことをOSに伝える
}
実行結果:.実行したプログラムファイル(.cpp)と同じディレクトリに example.txt
という名前のファイルが作成され、その中にWriting this to a file.
というテキストが書き込まれます。
このコードでは、まずofstream
オブジェクトmyfile
を作成しています。次にopen
関数を使ってexample.txt
というファイルを開き、<<
演算子を使って文字列をファイルに書き込んでいます。最後にclose
関数を使ってファイルを閉じています。
ファイル操作を行う際は、必ず最後にファイルを閉じることを忘れないでください。これにより、未保存の変更が確実にファイルに書き込まれ、リソースが適切に解放されます。
ファイルの読み込み
ファイルからデータを読み込むには、ifstream
を使用します。
#include <fstream> // ファイル操作に必要なライブラリをインクルード
#include <iostream> // 入出力操作に必要なライブラリをインクルード
#include <string> // 文字列操作に必要なライブラリをインクルード
int main() {
std::ifstream myfile("example.txt"); // "example.txt"という名前のファイルを開くためのオブジェクトを作成
std::string line; // ファイルから読み込んだ行を保存するための文字列を作成
// ファイルが正しく開けたかどうかをチェック
if (myfile.is_open()) {
// ファイルから一行ずつ読み込む
while (getline(myfile, line)) {
std::cout << line << '\n'; // 読み込んだ行を出力
}
myfile.close(); // ファイルを閉じる
} else {
std::cout << "Unable to open file\n"; // ファイルが開けなかった場合のエラーメッセージを出力
}
return 0; // プログラムが正常に終了したことをOSに伝える
}
実行結果: example.txt
から読み込んだ内容がコンソールに表示されます。
このコードでは、まずifstream
オブジェクトmyfile
を作成し、example.txt
というファイルを開いています。次にgetline
関数を使ってファイルから一行ずつ読み込み、それをコンソールに出力しています。
ファイルを開く際は、常にその操作が成功したかどうかを確認することが重要です。これにより、ファイルが存在しない場合やアクセス権限がない場合などのエラーを適切に処理することができます。
ファイルのエラーハンドリング
エラーハンドリングの基本
ファイル操作にはさまざまなエラーが伴う可能性があります。そのため、エラーハンドリングは重要なスキルです。
#include <fstream> // ファイル操作に必要なライブラリをインクルード
#include <iostream> // 入出力操作に必要なライブラリをインクルード
int main() {
std::ofstream myfile; // ファイル出力のためのオブジェクトを作成
myfile.open("example.txt"); // "example.txt"という名前のファイルを開く(存在しない場合は新規作成)
// ファイルが正しく開けたかどうかをチェック
if (myfile.fail()) {
std::cerr << "Error opening file\n"; // エラーメッセージを出力
return 1; // エラーが発生したことをOSに伝える
}
myfile << "Writing this to a file.\n"; // ファイルにテキストを書き込む
myfile.close(); // ファイルを閉じる(これは重要!開いたままにしておくと、他のプログラムからアクセスできなくなる可能性がある)
return 0; // プログラムが正常に終了したことをOSに伝える
}
実行結果: ファイルが正常に開けた場合は何も表示されません。しかし、ファイルを開くのに失敗した場合(例えば、アクセス権限がない場合など)、エラーメッセージが表示されます。
このコードでは、fail
関数を使ってファイルの開き方が成功したかどうかを確認しています。もし失敗した場合は、エラーメッセージを出力し、プログラムを終了しています。
アドバイス:
エラーハンドリングは、プログラムが予期しない状況に適切に対応できるようにするための重要な手段です。特にファイル操作では、ファイルが存在しない、アクセス権限がない、ディスクがいっぱいであるなど、さまざまな理由でエラーが発生する可能性があります。
まとめ
- ファイルストリーム(
ifstream
、ofstream
)を使用して、C++でファイルの読み書きを行う方法を学びました。 - ファイルの読み書きには、ファイルを開く、データを読み書きする、そしてファイルを閉じる、という基本的なステップが含まれます。
- ファイル操作にはさまざまなエラーが伴う可能性があり、それらのエラーを適切に処理するためのエラーハンドリングの技術を学びました。
全体を通して、C++の入出力とファイル操作について基本的な知識を学びました。これらの知識は、プログラムがユーザーの入力を受け取ったり、計算結果を出力したり、大量のデータを効率的に処理したりするための基礎となります。これからもC++の学習を続けて、さらに多くの知識とスキルを身につけていきましょう。頑張ってください!
ファイル操作は、プログラムが外部の世界とやり取りするための基本的な手段です。これらの知識を身につけることで、より複雑で実用的なプログラムを作成することが可能になります。
次のページ >> 【C++】デバッグを解説
【C++】をより詳しく学びたい方はこちら >>【C++】入門書おすすめ3選!超初心者~中級者まで網羅!
プログラムを実行するための環境構築がまだの方は「C++を実行するための環境構築|初心者でも簡単!(Windows)」をご覧ください。
コメント