C++ でファイルにテキストを追加する方法
胡金庫
2023年10月12日
-
テキストをファイルに追加するには
std::ofstream
とopen()
メソッドを使用する -
ファイルにテキストを追加するには
std::fstream
とopen()
メソッドを使用する -
ファイルにテキストを追加するには
std::fstream
とopen()
を使ってwrite()
メソッドを使用する
この記事では、ファイルにテキストを追加する複数の C++ メソッドを紹介します。
テキストをファイルに追加するには std::ofstream
と open()
メソッドを使用する
まず、ofstream
オブジェクトを作成し、そのメンバ関数 open
を呼び出す。このメソッドは第 1 引数にファイル名を string
オブジェクトとして渡します。第 2 引数として、以下の表に示すように、定義済みの定数を指定してオープンモードを渡すことができます。
定数 | 説明 |
---|---|
std::ios_base::app |
各書き込みの前にストリームの最後までシーク |
std::ios_base::binary |
バイナリオープン |
std::ios_base::in |
読むためにファイルを開く |
std::ios_base::out |
書き込み用にファイルを開く |
std::ios_base::trunc |
開くときにストリームの内容を破棄します |
std::ios_base::ate |
オープン直後にストリームの端をシーク |
以下のコードサンプルでは、現在の作業ディレクトリに tmp.txt
という名前のファイルが作成されていることに注意してください。作成するファイルのフルパスを渡したり、別の場所に追加したりすることができます。
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::ofstream;
using std::string;
int main() {
string filename("tmp.txt");
ofstream file_out;
file_out.open(filename, std::ios_base::app);
file_out << "Some random text to append." << endl;
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
出力:
Done !
ファイルにテキストを追加するには std::fstream
と open()
メソッドを使用する
別の方法として、fstream
を使って先ほどの例を実装することもできます。このメソッドはファイルストリームを操作するための普遍的な方法です。また、is_open
を呼び出した場合には、ストリームが指定したファイルに関連付けられているかどうかを確認するバリデーションも追加しています。
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::string;
int main() {
string filename("tmp.txt");
fstream file;
file.open(filename, std::ios_base::app | std::ios_base::in);
if (file.is_open()) file << "Some random text to append." << endl;
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
ファイルにテキストを追加するには std::fstream
と open()
を使って write()
メソッドを使用する
この問題を解決するもう一つの方法は、以前の例で行ったように <<
演算子を使用するのではなく、fstream
オブジェクトから明示的に write
メンバ関数を呼び出すことです。ほとんどのシナリオではこの方法の方が高速ですが、厳密な性能要件がある場合は、常にコードをプロファイルしてタイミングを比較するようにしてください。
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::string;
int main() {
string text("Some huge text to be appended");
string filename("tmp.txt");
fstream file;
file.open(filename, std::ios_base::app);
if (file.is_open()) file.write(text.data(), text.size());
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
著者: 胡金庫