C++ Работа с файлове: Как да отваряте, пишете, четете, затваряте файлове C++
Какво представлява обработката на файлове C++?
Файловете съхраняват данни за постоянно в устройство за съхранение. С обработката на файлове изходът от програма може да бъде съхранен във файл. Могат да се извършват различни операции върху данните, докато са във файла.
Потокът е абстракция на устройство, където се извършват входно/изходни операции. Можете да представите поток или като дестинация, или като източник на знаци с неопределена дължина. Това ще се определи от тяхното използване. C++ ви предоставя библиотека, която идва с методи за работа с файлове. Нека го обсъдим.
Библиотеката fstream
Библиотеката fstream предоставя C++ програмисти с три класа за работа с файлове. Тези класове включват:
- ofstream– Този клас представлява изходен поток. Използва се за създаване на файлове и запис на информация във файлове.
- ifstream– Този клас представлява входен поток. Използва се за четене на информация от файлове с данни.
- fstream– Този клас обикновено представлява файлов поток. Предлага се с възможности за ofstream/ifstream. Това означава, че може да създава файлове, да пише във файлове, да чете от файлове с данни.
Следното изображение улеснява разбирането:

За да използвате горните класове на библиотеката fstream, трябва да я включите във вашата програма като заглавен файл. Разбира се, ще използвате директивата за препроцесор #include. Трябва също да включите заглавния файл на iostream.
Как да отваряте файлове
Преди да извършите каквато и да е операция с файл, първо трябва да го отворите. Ако трябва да пишете във файла, отворете го с помощта на fstream или ofstream обекти. Ако трябва само да четете от файла, отворете го с помощта на обекта ifstream.
Трите обекта, тоест fstream, ofstream и ifstream, имат функцията open(), дефинирана в тях. Функцията приема този синтаксис:
open (file_name, mode);
- Параметърът file_name обозначава името на файла за отваряне.
- Параметърът режим не е задължителен. Може да приема всяка от следните стойности:
| Стойност | Descriptйон |
|---|---|
| ios:: приложение | Режимът на добавяне. Изходът, изпратен към файла, се добавя към него. |
| ios::ate | Той отваря файла за изход, след което премества контролата за четене и запис в края на файла. |
| ios::in | Отваря файла за четене. |
| ios::out | Отваря файла за запис. |
| ios::trunc | Ако файлът съществува, елементите на файла трябва да бъдат съкратени преди отварянето му. |
Възможно е да използвате два режима едновременно. Вие ги комбинирате с помощта на | (OR) оператор.
Пример 1:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file", ios::out);
if (!my_file) {
cout << "File not created!";
}
else {
cout << "File created successfully!";
my_file.close();
}
return 0;
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в програмата, за да използвате нейните функции.
- Включете заглавния файл на fstream в програмата, за да използвате неговите класове.
- Включете пространството от имена std в нашия код, за да използвате неговите класове, без да го извиквате.
- Извикайте функцията main(). Логиката на програмата трябва да влезе в нейното тяло.
- Създайте обект от класа fstream и му дайте името my_file.
- Приложете функцията open() към горния обект, за да създадете нов файл. Изходният режим ни позволява да пишем във файла.
- Използвайте израза if, за да проверите дали създаването на файл е неуспешно.
- Съобщение за отпечатване на конзолата, ако файлът не е създаден.
- Край на тялото на израза if.
- Използвайте оператор else, за да посочите какво да направите, ако файлът е създаден.
- Съобщение за отпечатване на конзолата, ако файлът е създаден.
- Приложете функцията close() върху обекта, за да затворите файла.
- Край на тялото на оператора else.
- Програмата трябва да върне стойност, ако завърши успешно.
- Край на тялото на функцията main().
Как да затворите файлове
Веднъж C++ програма прекратява, то автоматично
- промива потоците
- освобождава разпределената памет
- затваря отворените файлове.
Въпреки това, като програмист, трябва да се научите да затваряте отворените файлове, преди програмата да приключи.
Обектите fstream, ofstream и ifstream имат функция close() за затваряне на файлове. Функцията приема този синтаксис:
void close();
Как да пишете във файлове
Можете да пишете във файл направо от вашия C++ програма. За това използвате оператор за вмъкване на поток (<<). Текстът, който ще бъде записан във файла, трябва да бъде ограден в двойни кавички.
Нека демонстрираме това.
Пример 2:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file.txt", ios::out);
if (!my_file) {
cout << "File not created!";
}
else {
cout << "File created successfully!";
my_file << "Guru99";
my_file.close();
}
return 0;
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в програмата, за да използвате нейните функции.
- Включете заглавния файл на fstream в програмата, за да използвате неговите класове.
- Включете пространството от имена std в програмата, за да използвате нейните класове, без да я извиквате.
- Извикайте функцията main(). Логиката на програмата трябва да се добави в тялото на тази функция.
- Създайте екземпляр на класа fstream и му дайте името my_file.
- Използвайте функцията open(), за да създадете нов файл с име my_file.txt. Файлът ще бъде отворен в изходен режим за запис в него.
- Използвайте оператор if, за да проверите дали файлът не е бил отворен.
- Текст за отпечатване на конзолата, ако файлът не е отворен.
- Край на тялото на израза if.
- Използвайте оператор else, за да посочите какво да направите, ако файлът е създаден.
- Текст за отпечатване на конзолата, ако файлът е създаден.
- Напишете малко текст в създадения файл.
- Използвайте функцията close(), за да затворите файла.
- Край на тялото на оператора else.
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на функцията main().
Как да четем от файлове
Можете да четете информация от файлове във вашия C++ програма. Това е възможно с помощта на оператор за извличане на поток (>>). Използвате оператора по същия начин, по който го използвате за четене на потребителско въвеждане от клавиатурата. Въпреки това, вместо да използвате обекта cin, вие използвате обекта ifstream/fstream.
Пример 3:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file.txt", ios::in);
if (!my_file) {
cout << "No such file";
}
else {
char ch;
while (1) {
my_file >> ch;
if (my_file.eof())
break;
cout << ch;
}
}
my_file.close();
return 0;
}
Изход:
Няма такъв файл
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в програмата, за да използвате нейните функции.
- Включете заглавния файл на fstream в програмата, за да използвате неговите класове.
- Включете пространството от имена std в програмата, за да използвате нейните класове, без да я извиквате.
- Извикайте функцията main(). Логиката на програмата трябва да се добави в тялото на тази функция.
- Създайте екземпляр на класа fstream и му дайте името my_file.
- Използвайте функцията open(), за да създадете нов файл с име my_file.txt. Файлът ще бъде отворен в режим in за четене от него.
- Използвайте оператор if, за да проверите дали файлът не съществува.
- Текст за отпечатване на конзолата, ако файлът не бъде намерен.
- Край на тялото на израза if.
- Използвайте оператор else, за да посочите какво да направите, ако файлът бъде намерен.
- Създаване на char променлива назована гл.
- Създаване на докато цикъл за итериране на съдържанието на файла.
- Запишете/съхранете съдържанието на файла в променливата ch.
- Използвайте условие if и функция eof(), която е край на файла, за да гарантирате, че компилаторът продължава да чете от файла, ако краят не е достигнат.
- Използвайте израз за прекъсване, за да спрете четенето от файла, след като краят е достигнат.
- Отпечатайте съдържанието на променливата ch на конзолата.
- Край на тялото докато.
- Край на тялото на оператора else.
- Извикайте функцията close(), за да затворите файла.
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на функцията main().
Oбобщение
- С обработката на файлове изходът от програма може да бъде изпратен и съхранен във файл.
- След това към данните могат да бъдат приложени редица операции, докато са във файла.
- Потокът е абстракция, която представлява устройство, където се извършват входно/изходни операции.
- Потокът може да бъде представен като местоназначение или източник на символи с неопределена дължина.
- Библиотеката fstream предоставя C++ програмисти с методи за работа с файлове.
- За да използвате библиотеката, трябва да я включите във вашата програма с помощта на директивата за препроцесор #include.



