file input output operations c
Дослідження операцій вводу-виводу файлів та функцій покажчика на файли в C ++.
При програмуванні в режимі реального часу ми маємо справу з великими шматками даних, які не можуть бути розміщені зі стандартних пристроїв вводу-виводу. Отже, нам потрібно використовувати вторинну пам’ять для зберігання даних. За допомогою вторинного сховища ми зазвичай зберігаємо дані у вигляді файлів.
Ми можемо читати дані з файлів або записувати дані у файли, використовуючи послідовність даних, що називається потоками, у текстовому або двійковому форматі. Існують різні введення / виведення та інші операції, пов’язані з файлами в C ++. Цей посібник пояснює ці операції, пов’язані з файлами, що використовують різні класи.
=> Завітайте сюди, щоб ознайомитись із ексклюзивними навчальними посібниками з C ++.
Що ви дізнаєтесь:
Класи введення / виведення файлів на C ++
Ми бачили клас iostream в C ++, який визначає стандартну функціональність введення та виведення, включаючи cin і cout. Цей клас обмежений стандартними пристроями введення та виведення, такими як клавіатура та монітор відповідно.
Що стосується файлових операцій, C ++ має інший набір класів, які можна використовувати.
Ці класи описані нижче:
- З потоку: Клас обробки файлів, який означає вихідний потік файлів і використовується для запису даних у файли.
- Якщо потік: Клас обробки файлів, який означає вхідний потік файлів і використовується для зчитування даних із файлу.
- Fstream: Клас обробки файлів, який має можливість обробляти як потоки, так і потоки. Його можна використовувати для читання та запису у файл.
У програмі обробки файлів C ++ підтримуються такі операції:
- Відкрийте файл
- Закрийте файл
- Читання з файлу
- Запис у файл
Давайте розглянемо кожну з цих операцій докладно !!
Відкрийте файл
Прив'язка об'єкта одного з класів потоку до файлу або для читання, або для запису, або обох називається відкриттям файлу. Відкритий файл представлений у коді за допомогою цього потокового об'єкта. Таким чином, будь-яка операція читання / запису, виконана з цим об'єктом потоку, буде застосована і до фізичного файлу.
Загальний синтаксис відкриття файлу з потоком:
void open(const char* filename, ios::open mode mode)
Ось,
filename => рядок, що містить шлях та ім'я файлу, який потрібно відкрити.
mode => Необов'язковий параметр, що вказує на режим відкриття файлу.
C ++ підтримує різні режими, в яких файл можна відкрити. Ми також можемо вказати комбінацію цих режимів за допомогою оператора АБО.
яке найкраще програмне забезпечення для управління завданнями
Файловий режим | Опис |
---|---|
ios :: in | Відкриває файл у режимі введення для читання. |
ios :: out | Відкриває файл у режимі виводу для запису даних у файл. |
ios :: їли | Встановіть початкову позицію в кінці файлу. Якщо прапорець кінця файлу не встановлений, початковою позицією встановлюється початок файлу. |
ios :: trunc | Якщо файл відкрито для запису і вже має вміст, вміст усікається. |
ios :: app | Відкриває файл у режимі додавання таким чином, що весь вміст додається в кінці файлу. |
ios :: двійковий | Відкриває файл у двійковому режимі. |
Наприклад,якщо ми хочемо відкрити файл “myfile.dat” для додавання даних у двійковому режимі, тоді ми можемо написати наступний код.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Як уже зазначалося, параметр режиму необов’язковий. Коли ми відкриваємо файл без зазначення другого параметра, функція відкритого члена ofstream, ifstream або fstream має режим за замовчуванням для відкриття файлу.
Вони подані наступним чином:
Клас | Режим за замовчуванням |
---|---|
Якщо потік | ios :: in |
з потоку | ios :: out |
Fstream | ios :: in | ios :: out |
Отже, якщо ми не вказуємо другий параметр у функції open, залежно від використовуваного класу потоку, файл відкривається в режимі за замовчуванням.
Закриття файлу
Ми можемо використовувати функцію закриття, щоб закрити файл і звільнити ресурси, що містяться у файлі, коли ми закінчимо операції введення та виведення файлу.
Функція закриття файлу:
void close()
Отже, коли ми закінчимо операції з вищезазначеним файлом myfile, ми можемо закрити файл таким чином:
myfile.close();
Після закриття файлу за допомогою функції закриття об'єкт файлу може бути використаний повторно для відкриття іншого файлу.
Читання з файлу
Ми можемо читати інформацію з файлу рядок за рядком, використовуючи оператор вилучення потоку (>>). Це схоже на читання вводу зі стандартного вводу за допомогою cin. Єдина відмінність полягає у файлах, ми використовуємо ifstream або fstream об'єкт замість cin.
Зразок коду для читання з файлу наведено нижче:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<У наведеному вище коді ми відкриваємо файл і за допомогою оператора вилучення потоку (>>) читаємо вміст файлу. Закінчивши читання, ми можемо закрити файл.
Запис у файл
Ми також можемо записувати дані у файл, використовуючи файлові операції. Оператором, який ми використовуємо для запису даних у файл, є оператор вставки потоку (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Давайте розглянемо такий приклад коду:
найкраще шпигунське програмне забезпечення для мобільних телефонів Android
char data[100]; ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Тут ми зчитуємо рядок із вводу і записуємо його у файл, який було відкрито за допомогою об'єкта потоку.
У наведеному нижче прикладі коду ми пропонуємо демонстрацію всіх операцій з обробкою файлів.
#include #include using namespace std; int main () { char data[100]; // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Вихід:
Запис у файл
Введіть своє ім'я: Вед
Введіть свій вік: 7
Читання з файлу
Автор
7
У наведеній вище програмі спочатку ми відкриваємо файл у режимі запису. Потім ми зчитуємо дані, тобто ім’я та вік, і записуємо їх у файл. Потім ми закриваємо цей файл. Далі ми відкриваємо той самий файл у режимі читання і зчитуємо дані файл за рядком із файлу і виводимо на екран.
Таким чином, ця програма охоплює всі операції файлового вводу-виводу.
Файл державних шлаків
Є деякі функції-члени, які використовуються для перевірки стану файлу. Усі ці функції повертають булеве значення.
Ми розклали ці функції наступним чином:
Функція Опис eof () Повертає true, якщо кінець файлу досягнуто під час читання файлу. не вдається () Повертає true, коли не вдається виконати операцію читання / запису або виникає помилка форматування погано () Повертає true, якщо зчитування з файлу або запис у файл не вдалося. добре () Повертає false у тих самих випадках, коли виклик будь-якої з вищезазначених функцій поверне true.
Отримати / покласти та інші спеціальні операції
Файлові потоки вводу-виводу, які ми бачили до цього часу, мають внутрішні позиції отримання та розміщення, подібні до інших потоків вводу-виводу, наприклад iostream.
Клас ifstream має внутрішню позицію отримання, яка містить розташування елемента / символу, який слід прочитати у файлі під час наступної операції введення. Клас потоку має внутрішню позицію put, яка містить розташування елемента / символу, який слід записати в наступній операції виводу.
До речі, fstream має як позиції get, так і put.
Для полегшення читання та письма, використовуючи ці позиції, ми маємо кілька функцій-членів, які використовуються для спостереження та модифікації цих позицій.
Ці функції перелічені нижче:
Функції Опис Tellg () Повертає поточну позицію покажчика get Tellp () Повертає поточну позицію покажчика put шукати (позиція) Переміщення отримує вказівник на вказане розташування, починаючи з початку файлу шукати (зміщення, напрямок) Переміщення отримують покажчик на значення зміщення щодо точки, заданої напрямком параметра. шукати (позиція) Під час переміщення розміщується покажчик на вказане розташування, починаючи з початку файлу шукати (зміщення, напрямок) Переміщення ставить покажчик на значення зсуву відносно точки, заданої напрямком параметра.
Параметр напрямку наведена у вищезазначених прототипах функцій є перераховані тип типу шукатидир і це визначає точку, з якої відраховується зсув.
Він може мати наступні значення.
ios :: поч Зсув від початку потоку ios :: cur Зсув від поточного положення ios :: end Зсув від кінця потоку
Давайте побачимо повний приклад, який демонструє використання цих функцій.
Як відкрити файл JSON у Windows 10
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< Вихід:
Створено новий файл
Початкове положення вказівника на файл: 34
Після searchp (-1, ios :: cur), Позиція вказівника на файл за адресою: 33
Після шукати (5, ios :: beg), вказівник на файл: 5
Після шукати (1, ios :: cur), вказівник на файл: 6
Як показано у вищезазначеній програмі, у нас створений файл, в який ми пишемо рядок тексту. Потім, використовуючи різні функції, описані вище, ми відображаємо різні позиції вказівника на файл.
Висновок
У цьому посібнику ми бачили різні файлові операції відкриття, закриття та читання / запису даних із / у файл.
Ми також бачили функції зміни вказівника на файл для доступу до певних позицій у файлі. У наступних підручниках ми обговоримо ще кілька важливих тем, пов’язаних із C ++.
=> Прочитайте навчальну серію Easy C ++.
Рекомендована література
- Основні операції введення / виводу на C ++
- Вхід-вихід і файли в Python (Python відкриває, читає та записує у файл)
- Основні операції вводу-виводу в Java (вхідні / вихідні потоки)
- Маніпулювання файлами в Unix: огляд файлової системи Unix
- Спеціальні символи Unix або метасимволи для управління файлами
- Дозволи доступу до файлів Unix: Unix Chmod, Chown та Chgrp
- Об'єкти файлу VBScript: CopyFile, DeleteFile, OpenTextFile, читання та запис текстового файлу
- Розгортання Java: Створення та виконання файлу JAR Java