Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Файлы и потоки C++

До сих пор мы использовали iostream стандартная библиотека, которая предоставляет cin и выйти методы чтения из стандартного ввода и записи в стандартный вывод соответственно.

Этот учебник научит вас, как читать и писать из файла. Для этого требуется другая стандартная библиотека C++ с именем fstream. , который определяет три новых типа данных —

<тд>

из потока

Этот тип данных представляет поток выходных файлов и используется для создания файлов и записи информации в файлы.

<тд>

еслипоток

Этот тип данных представляет входной файловый поток и используется для чтения информации из файлов.

<тд>

фстрим

Этот тип данных представляет файловый поток в целом и имеет возможности как ofstream, так и ifstream, что означает, что он может создавать файлы, записывать информацию в файлы и считывать информацию из файлов.

Старший № Тип данных и описание
1
2
3

Для выполнения обработки файлов на C++ заголовочные файлы и должны быть включены в исходный файл C++.

Открытие файла

Файл должен быть открыт, прежде чем вы сможете читать из него или писать в него. Либо из потока или fstream объект может использоваться для открытия файла для записи. И объект ifstream используется для открытия файла только для чтения.

Ниже приведен стандартный синтаксис функции open(), которая является членом объектов fstream, ifstream и ofstream.

void open(const char *filename, ios::openmode mode);

Здесь первый аргумент указывает имя и местоположение открываемого файла, а второй аргумент функции open() функция-член определяет режим, в котором файл должен быть открыт.

<тд>

iOS::приложение

Режим добавления. Весь вывод в этот файл должен быть добавлен в конец.

<тд>

ios::ate

Откройте файл для вывода и переместите элемент управления чтением/записью в конец файла.

<тд>

ios::in

Откройте файл для чтения.

<тд>

ios::out

Откройте файл для записи.

<тд>

ios::trunc

Если файл уже существует, его содержимое будет усечено перед открытием файла.

Старший № Флажок и описание режима
1
2
3
4
5

Вы можете объединить два или более из этих значений с помощью ИЛИ соединяя их вместе. Например, если вы хотите открыть файл в режиме записи и хотите обрезать его, если он уже существует, следующий будет синтаксис —

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

Аналогичным образом вы можете открыть файл для чтения и записи следующим образом:

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

Закрытие файла

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

Ниже приведен стандартный синтаксис функции close(), которая является членом объектов fstream, ifstream и ofstream.

void close();

Запись в файл

При программировании на C++ вы записываете информацию в файл из своей программы, используя оператор вставки потока (<<), точно так же, как вы используете этот оператор для вывода информации на экран. Единственное отличие состоит в том, что вы используете ofstream или фстрим объект вместо cout объект.

Чтение из файла

Вы читаете информацию из файла в свою программу, используя оператор извлечения потока (>>), точно так же, как вы используете этот оператор для ввода информации с клавиатуры. Единственное отличие состоит в том, что вы используете ifstream или фстрим объект вместо cin объект.

Пример чтения и записи

Ниже приведена программа C++, которая открывает файл в режиме чтения и записи. После записи введенной пользователем информации в файл с именем afile.dat программа считывает информацию из файла и выводит ее на экран —

Живая демонстрация
#include <fstream>
#include <iostream>
using namespace std;
 
int main () {
   char data[100];

   // open a file in write mode.
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // write inputted data into the file.
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // again write inputted data into the file.
   outfile << data << endl;

   // close the opened file.
   outfile.close();

   // open a file in read mode.
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // write the data at the screen.
   cout << data << endl;
   
   // again read the data from the file and display it.
   infile >> data; 
   cout << data << endl; 

   // close the opened file.
   infile.close();

   return 0;
}

Когда приведенный выше код скомпилирован и выполнен, он создает следующий образец ввода и вывода —

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

В приведенных выше примерах используются дополнительные функции объекта cin, такие как функция getline() для чтения строки извне и функция ignore() для игнорирования дополнительных символов, оставленных предыдущим оператором чтения.

Указатели позиции в файле

Оба istream и стрим предоставить функции-члены для изменения положения указателя позиции в файле. Эти функции-члены:seekg ("seek get") для istream и seekp («искать») для ostream.

Аргумент для seekg и seekp обычно представляет собой длинное целое число. Второй аргумент может быть указан для указания направления поиска. Направление поиска может быть ios::beg (по умолчанию) для позиционирования относительно начала потока, ios::cur для позиционирования относительно текущей позиции в потоке или ios::end для позиционирования относительно конца потока.

Указатель позиции файла — это целочисленное значение, указывающее положение в файле как количество байтов от начального положения файла. Вот несколько примеров позиционирования указателя позиции файла «get» —

// position to the nth byte of fileObject (assumes ios::beg)
fileObject.seekg( n );

// position n bytes forward in fileObject
fileObject.seekg( n, ios::cur );

// position n bytes back from end of fileObject
fileObject.seekg( n, ios::end );

// position at end of fileObject
fileObject.seekg( 0, ios::end );

Язык C

  1. Переменные C++, литералы и константы
  2. Классы и объекты С++
  3. Дружественные функции C++ и дружественные классы
  4. C Обработка файлов
  5. Управление каталогами и файлами Python
  6. Структуры и классы в C ++
  7. C — заголовочные файлы
  8. Дата и время С++
  9. Перегрузка C++ (оператор и функция)
  10. Что такое файл Mill?