2017-10-26 1 views
2

私はSOの投稿C++ file stream open modes ambiguityを見ていました。私はfstreamのデフォルトのファイルオープンモードを知りたかったのです。 ios_base ::アウト|答えの一つは、どのような上記の意味は次のコードは、ios_baseのfstream F(「A.TXT」、::で まったく同じオープンフラグでファイルを開くことで、fstreamのデフォルトモード

を語ります); ifstream g( "a.txt"、ios_base :: out); ofstream h( "a.txt"、ios_base :: in);

私が正しく理解すれば、私がfstreamのオブジェクトを作成した場合、私は読み書きができるはずです。

しかし、コードの下には

fstream testFile1; 
testFile1.open("text1.txt"); 
testFile1<<"Writing data to file"; 
testFile1.close(); 

をファイルに任意のデータを書き込むことはありませんが下記のようモードを追加すると、デフォルトのモードかどうかをだから

testFile1.open("text1.txt", ios::out); 

を「ファイルへの書き込みデータの」データのテキストファイルを作成します実装は定義されていますか? TDM-GCC-64ツールチェーンを使用しています。

+0

'ios :: in'モードと' ios :: in | ios :: out'は、ファイルがすでに存在することを要求します。それ以外の場合、 'open'は失敗します - あなたはチェックするのを忘れました... –

答えて

2

ifstreamのデフォルトモードはinです。 ofstreamのデフォルトモードはoutです。だからこそ彼らはそのように名づけられています。 fstreamなしデフォルトモードです。

この例では、2つのデフォルト値しか表示されておらず、明示的な引数が省略されていることを示しています。 fstream f("a.txt", ios_base::in | ios_base::out)は、デフォルトモードがないため、明示的に2つの明示的な引数を使用しています。