web-dev-qa-db-ja.com

c ++-fstreamおよびofstream

違いは何ですか:

fstream texfile;
textfile.open("Test.txt");

そして

ofstream textfile;
textfile.open("Test.txt");

それらの機能は同じですか?

11
Robin

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.

コメントにはさらにいくつかの素晴らしい点があります。

9
user657267

Cplusplus.comの彼らのページを見てください ここここ

ofstreamostreamから継承します。 fstreamiostreamから継承し、istreamstreamの両方から継承します。通常、ofstreamは出力操作(つまり、textfile << "hello")のみをサポートしますが、fstreamは出力操作と入力操作の両方をサポートしますが、ファイルを開くときに指定されるフラグによって異なります。あなたの例では、オープンモードはデフォルトでios_base::in | ios_base::outです。 ofstreamのデフォルトのオープンモードはios_base::outです。さらに、ios_base::outは常にofstreamオブジェクトに設定されます(引数モードで明示的に設定されていない場合でも)。

ofstreamが出力専用の場合はtextfileを使用し、入力専用の場合はifstreamを使用し、入力と出力の両方にfstreamを使用します。これはあなたの意図をより明白にします。

0
Danqi Wang