Обробка файлів за допомогою класів C++

Обробка файлів за допомогою класів C++

Обробка файлів використовується для постійного зберігання даних у комп’ютері. Використовуючи обробку файлів, ми можемо зберігати наші дані у вторинній пам’яті (жорсткому диску).
Як досягти обробки файлів
Щоб досягти обробки файлів, нам потрібно виконати наступні кроки:-
КРОК 1. Назва файлу
КРОК 2 - Відкриття файлу
КРОК 3 - Запис даних у файл
КРОК 4. Зчитування даних із файлу
КРОК 5 - Закриття файлу.

Потоки на C++: -

Ми надаємо вхідні дані програмі, що виконується, а програма виконання повертає результат. Послідовність байтів, наданих як вхідні дані програмі, що виконується, і послідовність байтів, які надходять як вихідні дані програми, що виконується, називаються потоком. Іншими словами, потоки - це не що інше, як потік даних у послідовності.

Операція введення та виведення між програмою, що виконується, і такими пристроями, як клавіатура та монітор, відома як консольна операція вводу-виводу. Операція введення та виведення між виконуваною програмою та файлами відома як операція дискового введення-виведення.

Класи для операцій потоку файлів: -

Система введення-виведення C++ містить набір класів, які визначають методи обробки файлів. До них належать класи ifstream, ofstream і fstream. Ці класи є похідними від fstream і відповідного класу iostream. Ці класи, розроблені для керування файлами диска, оголошені у fstream, тому ми повинні включити цей файл у будь-яку програму, яка використовує файли.
1. ios:-

  • ios означає вхідний вихідний потік.
  • Цей клас є базовим для інших класів у цій ієрархії класів.
  • Цей клас містить необхідні засоби, які використовуються всіма іншими похідними класами для операцій введення та виведення.

2. istream:-

  • istream означає вхідний потік.
  • Цей клас походить від класу «ios».
  • Цей клас обробляє вхідний потік.
  • Оператор вилучення (>>) перевантажений у цьому класі для обробки вхідних потоків від файлів до виконання програми.
  • Цей клас оголошує такі функції введення, як get(), getline() і read().

3. з іншого боку: -

  • ostream означає вихідний потік.
  • Цей клас походить від класу «ios».
  • Цей клас обробляє вихідний потік.
  • Оператор вставки ( < <) перевантажений у цьому класі для обробки вихідних потоків до файлів під час виконання програми.
  • Цей клас оголошує такі функції виведення, як put() і write().

4. streambuf:-

  • Цей клас містить покажчик, який вказує на буфер, який використовується для керування вхідними та вихідними потоками.

5. fstreambase:-

  • Цей клас забезпечує операції, загальні для файлових потоків. Служить основою для класів fstream, ifstream і ofstream.
  • Цей клас містить функції open() і close().

6. ifstream:-

  • Цей клас забезпечує операції введення.
  • Він містить функцію open() із режимом введення за замовчуванням.
  • Успадковує функції get(), getline(), read(), seekg() і tellg() від istream.

7. ofstream:-

  • Цей клас забезпечує операції виведення.
  • Він містить функцію open() із режимом виведення за замовчуванням.
  • Успадковує функції put(), write(), seekp() і tellp() від ostream.

8. fstream:-

  • Цей клас забезпечує підтримку одночасних операцій введення та виведення.
  • Успадковує всі функції від класів istream і ostream через iostream.

9. filebuf:-

  • Його призначення — налаштувати файлові буфери на читання та запис.
  • Ми також можемо використовувати функцію члена файлового буфера, щоб визначити довжину файлу.

У C++ файли в основному обробляються за допомогою трьох класів fstream, ifstream, ofstream, доступних у файлі заголовка fstream.
ofstream: Потоковий клас для запису у файли
ifstream: Потоковий клас для читання з файлів
fstream: Потоковий клас для читання та запису з/у файли.

Тепер перший крок, щоб відкрити певний файл для операції читання або запису. Ми можемо відкрити файл за допомогою
1. передача імені файлу в конструкторі під час створення об'єкта
2. за допомогою відкритого методу

Для напр.

Відкрити файл за допомогою конструктора
ifstream (const char* ім’я файлу, режим ios_base::openmode = ios_base::in);
ifstream fin(ім'я файлу, openmode) за замовчуванням openmode = ios::in
ifstream fin(ім'я файлу);

Відкрийте файл за допомогою відкритого методу
Виклик конструктора за замовчуванням
кінець ifstream;
fin.open(ім'я файлу, відкритий режим)
fin.open(ім'я файлу);

Режими:

Постійний член Виступає за Доступ
в * введення Файл відкрито для читання: внутрішній буфер потоку підтримує операції введення.
поза вихід Файл відкрито для запису: внутрішній буфер потоку підтримує операції виведення.
двійковий двійковий Операції виконуються в двійковому режимі, а не в текстовому.
їв в кінці Позиція виведення починається в кінці файлу.
додаток додавати Усі операції виведення виконуються в кінці файлу, додаючи його до наявного вмісту.
стовбур урізати Будь-який вміст, який існував у файлі до його відкриття, відкидається.

Відкриті режими за замовчуванням:

ifstream ios::in
ofstream ios::out
fstream ios::in | ios::out

Постановка проблеми : для читання та запису файлу на C++.
приклади:

Input : Welcome in techcodeview.com. Best way to learn things. -1 Output : Welcome in techcodeview.com. Best way to learn things. 

Нижче наведено реалізацію за допомогою класи ifstream і ofstream .

C++




/* File Handling with C++ using ifstream & ofstream class object*/> /* To write the Content in File*/> /* Then to read the content of file*/> #include> /* fstream header file for ifstream, ofstream,> > fstream classes */> #include> using> namespace> std;> // Driver Code> int> main()> {> > // Creation of ofstream class object> > ofstream fout;> > string line;> > // by default ios::out mode, automatically deletes> > // the content of file. To append the content, open in ios:app> > // fout.open('sample.txt', ios::app)> > fout.open(> 'sample.txt'> );> > // Execute a loop If file successfully opened> > while> (fout) {> > // Read a Line from standard input> > getline(cin, line);> > // Press -1 to exit> > if> (line ==> '-1'> )> > break> ;> > // Write line in file> > fout < < line < < endl;> > }> > // Close the File> > fout.close();> > // Creation of ifstream class object to read the file> > ifstream fin;> > // by default open mode = ios::in mode> > fin.open(> 'sample.txt'> );> > // Execute a loop until EOF (End of File)> > while> (getline(fin, line)) {> > > // Print line (read from file) in Console> > cout < < line < < endl;> > }> > // Close the file> > fin.close();> > return> 0;> }>

Часова складність: O(n)
Допоміжний простір: O(1)

Нижче наведено реалізацію за допомогою клас fstream .

C++




/* File Handling with C++ using fstream class object */> /* To write the Content in File */> /* Then to read the content of file*/> #include> /* fstream header file for ifstream, ofstream,> > fstream classes */> #include> using> namespace> std;> // Driver Code> int> main()> {> > // Creation of fstream class object> > fstream fio;> > string line;> > // by default openmode = ios::in|ios::out mode> > // Automatically overwrites the content of file, To append> > // the content, open in ios:app> > // fio.open('sample.txt', ios::in|ios::out|ios::app)> > // ios::trunc mode delete all content before open> > fio.open(> 'sample.txt'> , ios::trunc | ios::out | ios::in);> > // Execute a loop If file successfully Opened> > while> (fio) {> > // Read a Line from standard input> > getline(cin, line);> > // Press -1 to exit> > if> (line ==> '-1'> )> > break> ;> > // Write line in file> > fio < < line < < endl;> > }> > // Execute a loop until EOF (End of File)> > // point read pointer at beginning of file> > fio.seekg(0, ios::beg);> > while> (fio) {> > // Read a Line from File> > getline(fio, line);> > // Print line in Console> > cout < < line < < endl;> > }> > // Close the file> > fio.close();> > return> 0;> }>

Часова складність: O(n)
Допоміжний простір: O(1)

C++




Q: write a single file handling program in c++ to reading and writing data on a file.> #include> #include> > using> namespace> std;> main()> {> > int> rno,fee;> > char> name[50];> > > cout < <> 'Enter the Roll Number:'> ;> > cin>>rno;>> > > cout < <> ' Enter the Name:'> ;> > cin>>ім'я;> > > cout < <> ' Enter the Fee:'> ;> > cin>>плата;> > > ofstream fout(> 'd:/student.doc'> );> > > fout <' ' <' ' >rno>>name>>плата; //читання даних з файлу student fin.close(); cout <' ' <' ' < return 0; }>

Часова складність: O(1)
Допоміжний простір: O(1)

C++




// Q: WA C++ file handling program to read data from the file called student.doc> #include> #include> using> namespace> std;> main()> {> > int> rno,fee;> > char> name[50];> > > ifstream fin(> 'd:/student.doc'> );> > > fin>>rno>>name>>плата;> //read data from the file student> > > fin.close();> > > cout <' ' <' ' < return 0; }>

Часова складність: O(1)
Допоміжний простір: O(50)