2017-09-08 6 views
0

のfstreamがすでに存在するファイルのためにios::outモードでのみ使用されている場合、それはファイルを切り捨て、期待通りに(新たに開いたファイルにデータを書き込みます)。使用中のIOS ::とiOS :: outが同時にfstreamの中

しかしのfstreamは次のようにモードに内外の両方で使用されている場合:

fstream fil; 
fil.open("Student.dat",ios::out|ios::in); 

それは切り捨てすでに存在するファイル、むしろそれが含むファイル、その結果のファイルに上書きされていません既に存在するコンテンツを新しいコンテンツに追加した新しいコンテンツと、 'out'モードでは、既存のファイルを切り捨てることが予想されます。

誰でも、なぜそれが起こるのか説明できますか?

+0

'ios :: trunc'フラグが切り詰めに使用されていませんか? –

+0

'ios :: trunc'フラグは切り捨てに使用されますが、デフォルトでは' ios :: out'で利用可能で、 'ios :: out'が単独で使用されているとき(つまりios :: inなし)に見ることができます。ですから、ios :: outで 'ios :: out'を使うと、デフォルトで切り捨てられません。とにかくお返事ありがとうございます... –

答えて

0

最初にファイルから読み取る場合は、最初に切り捨てる必要はありません。それはあなたの裁量に委ねられます。これは予想される動作です。

関連する問題