C++ Chiusura di un file


Esempio

Raramente chiudere un file è raramente necessario in C ++, in quanto un flusso di file chiuderà automaticamente il suo file associato nel suo distruttore. Tuttavia, si dovrebbe cercare di limitare la durata di un oggetto flusso di file, in modo che non mantenga l'handle del file aperto più a lungo del necessario. Ad esempio, ciò può essere fatto inserendo tutte le operazioni sui file in un proprio ambito ( {} ):

std::string const prepared_data = prepare_data();
{
    // Open a file for writing.
    std::ofstream output("foo.txt");

    // Write data.
    output << prepared_data;
}  // The ofstream will go out of scope here.
   // Its destructor will take care of closing the file properly.

Chiamare close() esplicitamente è necessario solo se si desidera riutilizzare lo stesso oggetto fstream secondo momento, ma non si vuole mantenere il file aperto tra:

// Open the file "foo.txt" for the first time.
std::ofstream output("foo.txt");

// Get some data to write from somewhere.
std::string const prepared_data = prepare_data();

// Write data to the file "foo.txt".
output << prepared_data;

// Close the file "foo.txt".
output.close();

// Preparing data might take a long time. Therefore, we don't open the output file stream
// before we actually can write some data to it.
std::string const more_prepared_data = prepare_complex_data();

// Open the file "foo.txt" for the second time once we are ready for writing.
output.open("foo.txt");

// Write the data to the file "foo.txt".
output << more_prepared_data;

// Close the file "foo.txt" once again.
output.close();