#12 C++で学ぶファイル読み書きの基本
C++のファイル操作は、fstreamという機能を使い、ストリームという考え方でファイルを扱います。この記事では、C++におけるファイル操作の基本と、開けているか確認する方法を解説します。
ファイルを読み込む
#include
#include
std::ifstream file("data.txt");
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
ifstreamは読み込み専用のストリームで、getlineを使って1行ずつ読み込みます。
ファイルが開けたか確認する
指定したファイルが存在しない場合でも、ifstreamのコンストラクタ自体はエラーにならないため、開けたかどうかを別途確認する必要があります。
std::ifstream file("data.txt");
if (!file.is_open()) {
std::cout << "ファイルを開けませんでした" << std::endl;
return 1;
}
ファイルに書き込む
std::ofstream file("data.txt");
file << "こんにちは";
ofstreamは書き込み専用のストリームで、<<という、以前の記事で触れた標準出力と同じ記号を使って書き込みます。既存の内容に追記したい場合は、std::ofstream file("data.txt", std::ios::app);のようにstd::ios::appを指定します。
読み書き両方できるfstream
1つのファイルに対して読み込みと書き込みの両方を行いたい場合は、std::fstreamを使います。
std::fstream file("data.txt", std::ios::in | std::ios::out);
C++ならではの注意点
C++のファイル操作は、開いたファイルをclose()で明示的に閉じることもできますが、ifstream・ofstreamのオブジェクトが使われなくなったタイミングで自動的に閉じられる仕組みも用意されています。この自動的な後片付けの仕組みは、C++の重要な設計思想のひとつです。ファイルが存在しない・権限が無いといった理由で操作に失敗することは珍しくないため、is_open()での確認を習慣にしておくと、原因不明の不具合を防げます。
まとめ
C++のファイル操作はifstream・ofstream・fstreamというストリームを使います。標準出力と同じ<<の記号が使われる点や、is_open()での確認も覚えておきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
C++をもっと学びたい方には「新・明解C++入門編」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿