10

one を使用 すると、とstd::fstreamの両方の型のオブジェクトを宣言できます。唯一の違いは、 , をパラメータとして提供する必要があることです。これは、他の 2 つには常に必要とは限りません。ifstreamofstreamfstreaminoutapp

コーディングの利便性だけifstream,ofstreamで達成できないことについて何か特別なことはありますか?fstream

4

3 に答える 3

16

constとにかく変数から読み書きできるのに、なぜ私たちが欲しいのかと尋ねるようなものです。これにより、バグを減らすための非常に貴重な機能であるコンパイル時のチェックが可能になります。また、コンストラクター呼び出しなしで宣言を見ると、それが入力、出力、またはその両方であるかどうかを確認できるため、より自己文書化されています。言及したパラメーターは、多くの場合、実装ファイルでしか見られず、手元にない場合があります。また、ストリームの種類ごとに、必要なデータ メンバーにいくつかの違いがある場合があります。実際のニーズに一致する最小限の機能のクラスを使用すると、メモリを節約したり、他の変数の初期化やチェックに時間を費やしたりする可能性があります。

于 2012-08-02T03:02:50.043 に答える
4

どちらかといえばfstream、便利なものです。特に、あなたが持っているものは基本的に次のとおりです。

namespace std { 
class ifstream { /* ... */ };

class ofstream { /* ... */ };

class fstream : public ifstream, public ofstream { /* ... */ };
}

[明らかに、多くの無関係な詳細をスキップしています]。

つまり、 はとの両方から派生することにより、 のすべてfstreamの入力機能ifstreamと のすべての出力機能を提供します。とがなければ、 は(少なくとも現在の形に似たものでは) まったく存在できませんでした。ofstreamifstreamofstreamifstreamofstreamfstream

于 2012-08-02T03:23:25.280 に答える
3

全体のポイントは、一般的であることです。ファイルの読み取りのみが必要な場合は、パラメーターとして ifstream を使用できます。その後、書き込み可能でなくても、読み取りをサポートするものを渡すことができます。およびその逆。

于 2012-08-02T03:00:28.593 に答える