2016-09-19 1 views
2

Aus irgendeinem Grund schaffen, der folgende Code eine neue Datei nicht erstellt werden kann, das heißt, wenn die Datei bereits vorhanden ist es überschreibt, sonst tut es nichts:C++/fstream: kann keine neue Datei

#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; 
} 

Was habe ich falsch gemacht?

C++ Compiler: Klirren
System: OS-X 10.9.5

+0

am Ende existieren muss, sollten Sie schreiben fs.close() –

+2

@ Android400: Ein Hand-macht keinen Sinn. Nachdem das 'fs'-Objekt zerstört wurde, während der Bereich des Hauptbereichs verlassen wurde, wird die Datei geschlossen, während fs zerstört wird. – Klaus

+0

ja in diesem Beispiel machen ein Handbuch schließen keinen Sinn, aber in anderen Anwendungen ist es nicht nutzlos. –

Antwort

2

Wenn Sie eine neue Datei zu erstellen, schreiben:

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

die Arbeit machen.

Wenn Sie std::ios_base::in verwenden die Datei

+0

Warum 'std :: fstream fs (" test_out.log ", std :: ios_base :: in | std :: ios_base :: out);' konnte die Datei nicht erstellt werden? –

+2

@GilsonPJ: Wenn Sie 'std :: ios_base :: in' verwenden, muss die Datei existieren. – Klaus

+0

Danke. ohne 'in' ist es die Datei zu erstellen –

Verwandte Themen