std::fstream::close() в С++

Опубликовано: 4 Сентября, 2022

Файлы играют важную роль в программировании. Это позволяет хранить данные постоянно. Язык C++ предоставляет механизм для хранения вывода программы в файле и просмотра из файла на диске. Этот механизм называется обработкой файлов. Для выполнения обработки файлов используются следующие общие функции:

  • open() : эта функция помогает создать файл и открыть его в различных режимах, таких как операции ввода, операции вывода, двоичный режим и т. д.
  • close() : эта функция помогает закрыть существующий файл.
  • get(): эта функция помогает прочитать один символ из файла.
  • put() : эта функция помогает записать в файл один символ.
  • read() : эта функция помогает читать данные из файла.
  • write() : эта функция помогает нам записывать данные в файл.

Поток — это абстракция, представляющая инструмент, на котором выполняются операции ввода и вывода. Поток часто представляется как источник или назначение символов неопределенной длины, в расчете на его использование. До сих пор заголовочный файл, предоставляющий функции cin и cout , использовался для запроса ввода с консоли и записи вывода на консоль соответственно. В C++ есть группа методов обработки файлов. К ним относятся ifstream, ofstream и fstream. Эти классы получены из fstreambase и из соответствующего класса iostream. Эти классы разработаны таким образом, что они могут управлять файлами на диске, объявленными в fstream, и поэтому этот файл должен быть включен в любую программу, использующую файлы.

Библиотека fstream: Fstream — это библиотека, состоящая из ofstream и ifstream , что означает, что она может создавать файлы, записывать информацию в файлы и считывать информацию из файлов. Этот заголовочный файл обычно используется как тип данных, представляющий файловый поток. Который используется при описании синтаксиса для открытия, чтения, ввода и закрытия файла и т. д.

Как закрыть файл? Чтобы использовать файл на диске для хранения данных, необходимо определить следующие параметры файла и его предполагаемого использования. Следует отметить следующие параметры:

  • Имя файла.
  • Тип данных и структура файла.
  • Назначение (чтение, запись данных).
  • Метод открытия.
  • Закрытие файла после использования.

В этой статье основное внимание уделяется закрытию файла. В случае, если программа C++ завершается, она автоматически сбрасывает все потоки, освобождает всю выделенную память и закрывает все открытые файлы. Следовательно, это хорошая альтернатива использованию функции close() для закрытия потоков, связанных с файлами, и она является членом объектов ifsream, ofstream и fstream.

Синтаксис:

close()

Характеристики:

  • Возвращаемое значение: функция close() не предоставляет возвращаемого значения, что означает, что в случае сбоя операции, в том числе если перед вызовом не было открыто ни одного файла, для потока устанавливается флаг состояния failbit (который может вызвать ios_base::failure, если это состояние флаг был зарегистрирован с использованием исключений членов.
  • Обработка исключений: когда функция снабжена исключением и поток находится в допустимом состоянии, любое исключение, созданное внутренней операцией, перехватывается функцией и повторно создается после закрытия файла. Он создает исключение для отказа типа члена только в том случае, если функция дает сбой (установка флага состояния failbit ) и для этого состояния установлены исключения членов.
  • Он изменяет объект fstream . Параллельный доступ к эквивалентному потоку может привести к гонкам данных.

Ниже приведена программа C++ для реализации функции close():

C++




// C++ program to implement close() function
#include <fstream>
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    char data[100];
 
    // Open a file in write
    // mode.
    ofstream outfile;
    outfile.open("gfg.data");
 
    cout << "Writing to the file" << endl;
    cout << "Enter your name: ";
 
    // This function will take the entire
    // the user enters and will store in
    // the "data" array declare above
    cin.getline(data, 100);
 
    // Write inputted data into
    // the file.
    outfile << data << endl;
 
    // Here we make use of the close()
    // function to close the opened file
    outfile.close();
 
    // Open a file in read mode
    ifstream infile;
    infile.open("gfg.data");
 
    cout << "Reading from the file"
         << endl;
    infile >> data;
 
    // Write the data at the screen
    cout << data << endl;
 
    // Close the opened file
    infile.close();
 
    return 0;
}

Выход: