2016-09-19 4 views
2

を作成することはできません、新しいファイルを作成することはできません次のコード、つまりファイルがすでに、それを上書き存在するそれ以外の場合は、全く何もしない場合:C++/fstreamの:何らかの理由で新しいファイル

#include <fstream> 

int main() 
{ 
    std::fstream fs("test_out.log"); // <-- does not create a new file! 
    //std::fstream fs("test_out.log", std::ios_base::in | std::ios_base::out); // <-- does not create a new file! 

    fs << "TEST" << std::endl; 
} 

何私は間違っているのですか?

C++コンパイラ:打ち鳴らす
システム:OS-X 10.9.5

+0

を存在しなければなりませんstd::ios_base::inを使用している場合は、(fs.closeを書く必要があります) –

+2

:手動クローズは意味がありません。 fsが破壊されている間、 'fs'オブジェクトがmainのスコープを離れて破壊された後、ファイルは閉じられます。 – Klaus

+0

はい、この例では手動では意味がありませんが、他の用途では役に立たないわけではありません。 –

答えて

2

あなたが書くために新しいファイルを作成する場合:

std::ofstream fs("test_out.log"); 

は、仕事をします。 Android400 @

あなたは、ファイルが最後に

+0

なぜ 'std :: fstream fs(" test_out.log "、std :: ios_base :: in | std :: ios_base :: out);'ファイルの作成に失敗しましたか? –

+2

@GilsonPJ: 'std :: ios_base :: in'を使うと、そのファイルが存在しなければなりません。 – Klaus

+0

ありがとうございます。 'in'なしでファイルを作成しています –

関連する問題