違いは何ですか:
fstream texfile;
textfile.open("Test.txt");
そして
ofstream textfile;
textfile.open("Test.txt");
それらの機能は同じですか?
ofstream
には出力するためのメソッドしかないため、たとえばtextfile >> whatever
を試してもコンパイルされません。 fstream
は入力と出力に使用できますが、何が機能するかはコンストラクター/ open
に渡すフラグによって異なります。
std::string s;
std::ofstream ostream("file");
std::fstream stream("file", stream.out);
ostream >> s; // compiler error
stream >> s; // no compiler error, but operation will fail.
コメントにはさらにいくつかの素晴らしい点があります。
Cplusplus.comの彼らのページを見てください ここ と ここ 。
ofstream
はostream
から継承します。 fstream
はiostream
から継承し、istream
とstream
の両方から継承します。通常、ofstream
は出力操作(つまり、textfile << "hello")のみをサポートしますが、fstream
は出力操作と入力操作の両方をサポートしますが、ファイルを開くときに指定されるフラグによって異なります。あなたの例では、オープンモードはデフォルトでios_base::in | ios_base::out
です。 ofstream
のデフォルトのオープンモードはios_base::out
です。さらに、ios_base::out
は常にofstreamオブジェクトに設定されます(引数モードで明示的に設定されていない場合でも)。
ofstream
が出力専用の場合はtextfile
を使用し、入力専用の場合はifstream
を使用し、入力と出力の両方にfstream
を使用します。これはあなたの意図をより明白にします。