Как читать и записывать в файл на C ++

How Read Write File C

В этой статье мы покажем вам, как читать и писать в файл на языке программирования C ++, используя несколько примеров. Чтобы понять файловые операции C ++, такие как чтение и запись, мы должны сначала понять концепцию потока в C ++.

Что такое поток?

Поток - это просто поток данных или символов. Есть два типа потоков: входные потоки и выходные потоки. Входной поток используется для чтения данных с внешнего устройства ввода, такого как клавиатура, а выходной поток используется для записи данных на внешнее устройство вывода, такое как монитор. Файл можно рассматривать как источник ввода и вывода.





В C ++ мы используем поток для отправки или получения данных во внешний источник или из него.



Мы можем использовать встроенные классы для доступа к потоку ввода / вывода, то есть ios.

Вот иерархия потоковых классов языка программирования C ++:



Объекты cin и cout используются для чтения данных с клавиатуры и отображения вывода на мониторе соответственно. Кроме того, ifstream, что означает поток входного файла, используется для чтения потока данных из файла, а ofstream, который означает поток выходного файла, используется для записи потока данных в файл.

Файл iostram.h содержит все необходимые классы стандартных потоков ввода / вывода на языке программирования C ++.

Примеры

Теперь, когда вы понимаете основы потоков, мы обсудим следующие примеры, которые помогут вам лучше понять файловые операции в C ++:

  • Пример 1: открытие и закрытие файла
  • Пример 2: Запись в файл
  • Пример 3: чтение из файла
  • Пример 4: Чтение и запись в файл
  • Пример 5: Чтение и запись в двоичный файл

Пример 1: открытие и закрытие файла

В этом примере программы мы продемонстрируем, как открыть / создать файл и как закрыть файл на C ++. Как вы можете видеть в приведенной ниже программе, мы включили библиотеку, необходимую для файловых операций.

Чтобы открыть и закрыть файл, нам понадобится объект ofstream. Затем, чтобы прочитать или записать в файл, мы должны открыть файл. Мы включили файл заголовка fstream в строку номер 1, чтобы мы могли получить доступ к классу ofstream.

Мы объявили myFile_Handler как объект ofstream внутри основной функции. Затем мы можем использовать функцию open () для создания пустого файла и функцию close () для закрытия файла.

#включают

с использованием пространство именчасы;

intглавный()
{
ofstream myFile_Handler;

// Файл открыт
myFile_Handler.открытым('File_1.txt');

// Файл закрывается
myFile_Handler.близко();
возвращение 0;
}

Теперь мы скомпилируем программу и проверим вывод. Как вы можете видеть в окне вывода ниже, файл File_1.txt был создан после выполнения программы. Размер файла равен нулю, поскольку мы не записали в файл никакого содержимого.

Пример 2: Запись в файл

В предыдущем примере программы мы показали вам, как открыть файл и как закрыть файл. Теперь мы покажем вам, как что-то записать в файл.

Мы можем записать в файл с помощью оператора вставки потока, т. Е.<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#включают

с использованием пространство именчасы;

intглавный()
{
ofstream myFile_Handler;
// Файл открыт
myFile_Handler.открытым('File_1.txt');

// Записываем в файл
myFile_Handler<< 'Это образец тестового файла. ' <<конец;
myFile_Handler<< 'Это вторая строка файла. ' <<конец;

// Файл закрывается
myFile_Handler.близко();
возвращение 0;
}

Теперь мы скомпилируем указанную выше программу и выполним ее. Как видите ниже, мы успешно записали в файл File_1.txt.

Пример 3: чтение из файла

В предыдущих примерах мы показали вам, как записывать контент в файл. Теперь давайте прочитаем содержимое файла, который мы создали в Примере-2, и отобразим содержимое на стандартном устройстве вывода, то есть на мониторе.

Мы используем функцию getline (), чтобы прочитать всю строку из файла, а затем cout, чтобы распечатать строку на мониторе.

#включают
#включают
#включают

с использованием пространство именчасы;

intглавный()
{
ifstream myFile_Handler;
строка myLine;

// Файл открывается в режиме чтения
myFile_Handler.открытым('File_1.txt');

если(myFile_Handler.открыт())
{
// Продолжаем читать файл
в то время как(Getline(myFile_Handler, myLine))
{
// выводим строку на стандартный вывод
Стоимость <<моя очередь<<конец;
}
// Файл закрывается
myFile_Handler.близко();
}
еще
{
Стоимость << 'Невозможно открыть файл!';
}
возвращение 0;
}

Теперь мы распечатаем содержимое File_1.txt, используя следующую команду: cat File_1.txt. После компиляции и выполнения программы становится ясно, что вывод соответствует содержимому файла. Таким образом, мы успешно прочитали файл и распечатали его содержимое на мониторе.

Пример 4: Чтение и запись в файл

До сих пор мы показали вам, как открывать, читать, писать и закрывать файл. В C ++ мы также можем одновременно читать и записывать в файл. Чтобы читать и писать в файл, мы должны получить объект fstream и открыть файл в режиме ios :: in и ios :: out.

В этом примере мы сначала записываем некоторый контент в файл. Затем мы читаем данные из файла и выводим их на монитор.

#включают
#включают
#включают

с использованием пространство именчасы;

intглавный()
{
fstream myFile_Handler;
строка myLine;

// Файл открыт
myFile_Handler.открытым('File_1.txt', iOS::в |iOS::из);

// Проверяем, открылся ли файл
если(!myFile_Handler)
{
Стоимость << 'Файл не открылся!';
выход(1);
}

// Записываем в файл
myFile_Handler<< '1. Это еще один образец тестового файла. ' <<конец;
myFile_Handler<< '2. Это вторая строка файла. ' <<конец;

myFile_Handler.искать(iOS::просить);

// Читаем файл
если(myFile_Handler.открыт())
{
// Продолжаем читать файл
в то время как(Getline(myFile_Handler, myLine))
{
// выводим строку на стандартный вывод
Стоимость <<моя очередь<<конец;
}

// Файл закрывается
myFile_Handler.близко();
}
еще
{
Стоимость << 'Невозможно открыть файл!';
}
myFile_Handler.близко();
возвращение 0;
}

Теперь скомпилируем и запустим программу.

Пример 5: Чтение и запись в двоичный файл

В этом примере мы собираемся объявить класс, а затем записать объект в двоичный файл. Чтобы упростить этот пример, мы объявили класс Employee с общедоступной переменной emp_id. Затем мы прочитаем двоичный файл и выведем результат на монитор.

#включают
#включают

с использованием пространство именчасы;

классРаботник
{
общественный:
intemp_id;
};

intглавный()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

Сотрудник empObj_W, empObj_R;

// Файл открыт
binOutFile_Handler.открытым('employee.dat', iOS::из |iOS::двоичный);

// Проверяем, открылся ли файл
если(!binOutFile_Handler)
{
Стоимость << 'Файл не открылся!';
выход(1);
}

// Инициализируем empObj_W
empObj_W.emp_id знак равно 1512;

// Записываем в файл
binOutFile_Handler.записывать((char *) &empObj_W,размер(Работник));
binOutFile_Handler.близко();

если(!binOutFile_Handler.хороший())
{
Стоимость << «Произошла ошибка при записи двоичного файла!» <<конец;
выход(2);
}

// Теперь давайте прочитаем файл employee.dat
binInFile_Handler.открытым('employee.dat', iOS::в |iOS::двоичный);
// Проверяем, открылся ли файл
если(!binInFile_Handler)
{
Стоимость << 'Файл не открылся!';
выход(3);
}

// Читаем содержимое двоичного файла
binInFile_Handler.читать((char *) &empObj_R,размер(Работник));
binInFile_Handler.близко();

если(!binInFile_Handler.хороший())
{
Стоимость << «Произошла ошибка при чтении двоичного файла!» <<конец;
выход(4);
}

// Распечатать вывод empObj_R
Стоимость << 'Подробная информация о сотруднике:' <<конец;
Стоимость << 'Идентификатор сотрудника:' <<empObj_R.emp_id <<конец;

возвращение 0;
}

Заключение

Файлы в основном используются для хранения данных и играют важную роль в реальном программировании. В этой статье мы показали вам, как использовать различные файловые операции с языком программирования C ++, на нескольких примерах. Кроме того, мы показали вам, как читать и записывать данные как в текстовые, так и в двоичные файлы.