Gestionarea Fișierelor Text în C++ 8
1. Obiectivele lecției:
- Să înțeleagă conceptul și utilizarea fișierelor text în C++.
- Să învețe cum să citească dintr-un fișier text și să scrie în acesta.
- Să implementeze exemple practice care implică utilizarea fișierelor text.
2. Introducere
Fișierele text sunt folosite pentru a stoca și manipula date sub formă de text. În C++, gestionarea fișierelor se face prin intermediul bibliotecii <fstream>, care oferă trei clase principale:
- ofstream – pentru scriere în fișiere.
- ifstream – pentru citire din fișiere.
- fstream – pentru citire și scriere în fișiere.
3. Utilizarea fișierelor text
1. Deschiderea și închiderea fișierelor
- Sintaxă generală:
#include <fstream>
using namespace std;
ofstream fisierScriere(„nume_fisier.txt”); // Scriere
ifstream fisierCitire(„nume_fisier.txt”); // Citire
fstream fisierGeneral(„nume_fisier.txt”); // Citire și scriere
- Metode pentru deschiderea fișierelor:
fisier.open(„nume_fisier.txt”, mod);
fisier.close();
- Moduri de deschidere (flag-uri):
- ios::in – Deschidere pentru citire.
- ios::out – Deschidere pentru scriere.
- ios::app – Scriere la finalul fișierului (append).
- ios::trunc – Golirea fișierului la deschidere.
- ios::binary – Deschidere în mod binar.
2. Scrierea în fișiere
- Exemplu simplu:
#include <fstream>
using namespace std;
int main() {
ofstream fisier(„exemplu.txt”);
if (fisier.is_open()) {
fisier << „Salut lume!” << endl;
fisier << „Aceasta este o linie de text.” << endl;
fisier.close();
cout << „Datele au fost scrise în fisier.” << endl;
} else {
cout << „Nu s-a putut deschide fisierul pentru scriere.” << endl;
}
return 0;
}
3. Citirea din fișiere
- Exemplu simplu:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream fisier(„exemplu.txt”);
if (fisier.is_open()) {
string linie;
while (getline(fisier, linie)) {
cout << linie << endl;
}
fisier.close();
} else {
cout << „Nu s-a putut deschide fisierul pentru citire.” << endl;
}
return 0;
}
4. Citire și scriere simultană
- Exemplu:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
fstream fisier(„exemplu.txt”, ios::in | ios::out | ios::app);
if (fisier.is_open()) {
// Scriere
fisier << „O noua linie adaugata.” << endl;
// Resetarea poziției pentru citire
fisier.seekg(0, ios::beg);
// Citire
string linie;
while (getline(fisier, linie)) {
cout << linie << endl;
}
fisier.close();
} else {
cout << „Nu s-a putut deschide fisierul.” << endl;
}
return 0;
}
5. Verificarea erorilor
- Metode utile:
- fisier.is_open() – Verifică dacă fișierul s-a deschis corect.
- fisier.eof() – Verifică sfârșitul fișierului.
- fisier.fail() – Verifică dacă o operație a eșuat.
4. Exemple practice
Exemplu 1: Scrierea numerelor într-un fișier
#include <fstream>
using namespace std;
int main() {
ofstream fisier(„numere.txt”);
if (fisier.is_open()) {
for (int i = 1; i <= 10; i++) {
fisier << i << endl;
}
fisier.close();
} else {
cout << „Eroare la deschiderea fisierului.” << endl;
}
return 0;
}
Exemplu 2: Citirea numerelor dintr-un fișier
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream fisier(„numere.txt”);
if (fisier.is_open()) {
int numar;
while (fisier >> numar) {
cout << numar << endl;
}
fisier.close();
} else {
cout << „Eroare la deschiderea fisierului.” << endl;
}
return 0;
}
Exemplu 3: Copierea conținutului unui fișier în altul
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream fisierCitire(„sursa.txt”);
ofstream fisierScriere(„destinatie.txt”);
if (fisierCitire.is_open() && fisierScriere.is_open()) {
string linie;
while (getline(fisierCitire, linie)) {
fisierScriere << linie << endl;
}
fisierCitire.close();
fisierScriere.close();
} else {
cout << „Eroare la deschiderea fișierelor.” << endl;
}
return 0;
}
5. Activități practice pentru elevi
- Scrieți un program care citește o propoziție de la utilizator și o salvează într-un fișier text.
- Realizați un program care numără câte linii sunt într-un fișier text.
- Implementați un program care caută un cuvânt într-un fișier text și afișează toate liniile care conțin acel cuvânt.
6. Scheme logice
- Scriere într-un fișier:
- Start -> Deschidere fișier pentru scriere -> Scriere date -> Închidere fișier -> Stop.
- Citire dintr-un fișier:
- Start -> Deschidere fișier pentru citire -> Citire linie -> Afișare linie -> Stop.
- Copiere fișier:
- Start -> Deschidere fișiere sursă și destinație -> Citire linie din sursă -> Scriere linie în destinație -> Stop.
7. Concluzie
- Gestionarea fișierelor text este o abilitate esențială în programare.
- Fișierele permit stocarea persistentă a datelor, iar bibliotecile din C++ oferă metode flexibile pentru citire și scriere.
- Practica este importantă pentru a înțelege utilizarea corectă și eficientă a fișierelor text.