C++ Rukovanje datotekama: Kako otvoriti, pisati, čitati, zatvoriti datoteke C++

U čemu je rukovanje datotekama C++?

Datoteke trajno pohranjuju podatke u uređaj za pohranu. Uz rukovanje datotekama, izlaz iz programa može se pohraniti u datoteku. Nad podacima se mogu izvoditi razne operacije dok su u datoteci.

Tok je apstrakcija uređaja gdje se izvode ulazno/izlazne operacije. Tok možete predstaviti ili kao odredište ili kao izvor znakova neodređene duljine. To će biti određeno njihovom upotrebom. C++ pruža vam biblioteku koja dolazi s metodama za rukovanje datotekama. Raspravljajmo o tome.

Knjižnica fstream

Knjižnica fstream pruža C++ programeri s tri klase za rad s datotekama. Ove klase uključuju:

  • ofstream– Ova klasa predstavlja izlazni tok. Koristi se za stvaranje datoteka i pisanje informacija u datoteke.
  • ifstream– Ova klasa predstavlja ulazni tok. Koristi se za čitanje informacija iz podatkovnih datoteka.
  • fstream– Ova klasa općenito predstavlja tok datoteke. Dolazi s ofstream/ifstream mogućnostima. To znači da može stvarati datoteke, pisati u datoteke, čitati iz podatkovnih datoteka.

Sljedeća slika olakšava razumijevanje:

fstream biblioteka
fstream biblioteka

Da biste koristili gornje klase biblioteke fstream, morate je uključiti u svoj program kao datoteku zaglavlja. Naravno, koristit ćete #include direktivu pretprocesora. Također morate uključiti iostream datoteku zaglavlja.

Kako otvoriti datoteke

Prije izvođenja bilo kakve operacije na datoteci, prvo je morate otvoriti. Ako trebate pisati u datoteku, otvorite je koristeći fstream ili ofstream objekte. Ako trebate samo čitati iz datoteke, otvorite je pomoću ifstream objekta.

Tri objekta, to jest fstream, ofstream i ifstream, imaju definiranu funkciju open(). Funkcija ima ovu sintaksu:

open (file_name, mode);
  • Parametar file_name označava naziv datoteke koju treba otvoriti.
  • Parametar načina rada nije obavezan. Može uzeti bilo koju od sljedećih vrijednosti:
Još malo brojeva Description
ios:: aplikacija Način dodavanja. Izlaz poslan u datoteku dodaje se njoj.
ios::jesti Otvara datoteku za izlaz, a zatim premješta kontrolu čitanja i pisanja na kraj datoteke.
ios::in Otvara datoteku za čitanje.
ios::out Otvara datoteku za pisanje.
ios::trunc Ako datoteka postoji, elementi datoteke trebaju biti skraćeni prije njenog otvaranja.

Moguće je koristiti dva načina rada istovremeno. Kombinirate ih pomoću | (OR) operator.

Primjer 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;
}

Izlaz:

Otvori datoteke

Evo snimke zaslona koda:

Otvori datoteke

Objašnjenje koda:

  1. Uključite iostream datoteku zaglavlja u program da biste koristili njegove funkcije.
  2. Uključite fstream datoteku zaglavlja u program za korištenje njegovih klasa.
  3. Uključite prostor imena std u naš kod da biste koristili njegove klase bez pozivanja.
  4. Pozovite funkciju main(). Programska logika treba ići unutar njegovog tijela.
  5. Napravite objekt klase fstream i dajte mu ime my_file.
  6. Primijenite funkciju open() na gornji objekt za stvaranje nove datoteke. Izlazni način nam omogućuje pisanje u datoteku.
  7. Upotrijebite naredbu if da provjerite je li stvaranje datoteke uspjelo.
  8. Poruka za ispis na konzoli ako datoteka nije stvorena.
  9. Kraj tijela if naredbe.
  10. Upotrijebite naredbu else da navedete što učiniti ako je datoteka stvorena.
  11. Poruka za ispis na konzoli ako je datoteka stvorena.
  12. Primijenite funkciju close() na objekt da biste zatvorili datoteku.
  13. Kraj tijela else naredbe.
  14. Program mora vratiti vrijednost ako uspješno završi.
  15. Kraj tijela funkcije main().

Kako zatvoriti datoteke

Jednom C++ program prekida, automatski

  • ispire potoke
  • oslobađa dodijeljenu memoriju
  • zatvara otvorene datoteke.

Međutim, kao programer, trebali biste naučiti zatvoriti otvorene datoteke prije nego što program završi.

Objekti fstream, ofstream i ifstream imaju funkciju close() za zatvaranje datoteka. Funkcija ima ovu sintaksu:

void close();

Kako pisati u datoteke

Možete pisati u datoteku izravno sa svog C++ program. Za to koristite operator umetanja toka (<<). Tekst koji se upisuje u datoteku treba biti u dvostrukim navodnicima.

Pokažimo ovo.

Primjer 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;
}

Izlaz:

Kako pisati u datoteke

Evo snimke zaslona koda:

Kako pisati u datoteke

Objašnjenje koda:

  1. Uključite iostream datoteku zaglavlja u program da biste koristili njegove funkcije.
  2. Uključite fstream datoteku zaglavlja u program za korištenje njegovih klasa.
  3. Uključite prostor imena std u program kako biste koristili njegove klase bez pozivanja.
  4. Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
  5. Napravite instancu klase fstream i dajte joj ime my_file.
  6. Koristite funkciju open() za stvaranje nove datoteke pod nazivom my_file.txt. Datoteka će se otvoriti u izlaznom načinu rada za upisivanje u nju.
  7. Upotrijebite naredbu if da provjerite je li datoteka otvorena.
  8. Tekst za ispis na konzoli ako se datoteka ne otvori.
  9. Kraj tijela naredbe if.
  10. Upotrijebite naredbu else da navedete što učiniti ako je datoteka stvorena.
  11. Tekst za ispis na konzoli ako je datoteka stvorena.
  12. Napišite tekst u stvorenu datoteku.
  13. Za zatvaranje datoteke koristite funkciju close().
  14. Kraj tijela else naredbe.
  15. Program mora vratiti vrijednost nakon uspješnog završetka.
  16. Kraj tijela funkcije main().

Kako čitati iz datoteka

Možete čitati informacije iz datoteka u svoje C++ program. To je moguće pomoću operatora za izdvajanje toka (>>). Operator koristite na isti način na koji ga koristite za čitanje korisničkog unosa s tipkovnice. Međutim, umjesto korištenja cin objekta, koristite ifstream/fstream objekt.

Primjer 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;
}

Izlaz:

Čitaj iz datoteka

Nema takve datoteke

Evo snimke zaslona koda:

Čitaj iz datoteka

Objašnjenje koda:

  1. Uključite iostream datoteku zaglavlja u program da biste koristili njegove funkcije.
  2. Uključite fstream datoteku zaglavlja u program za korištenje njegovih klasa.
  3. Uključite prostor imena std u program kako biste koristili njegove klase bez pozivanja.
  4. Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
  5. Napravite instancu klase fstream i dajte joj ime my_file.
  6. Koristite funkciju open() za stvaranje nove datoteke pod nazivom my_file.txt. Datoteka će se otvoriti u načinu rada za čitanje iz nje.
  7. Upotrijebite naredbu if da provjerite postoji li datoteka.
  8. Tekst za ispis na konzoli ako datoteka nije pronađena.
  9. Kraj tijela naredbe if.
  10. Upotrijebite naredbu else da odredite što učiniti ako se datoteka pronađe.
  11. Napravite char varijabla nazvan pogl.
  12. Napravite dok petlje za ponavljanje sadržaja datoteke.
  13. Zapišite/pohranite sadržaj datoteke u varijablu ch.
  14. Upotrijebite if uvjet i eof() funkciju koja je, kraj datoteke, kako biste osigurali da kompajler nastavi čitati iz datoteke ako kraj nije dosegnut.
  15. Upotrijebite naredbu break da zaustavite čitanje iz datoteke kada se dosegne kraj.
  16. Ispis sadržaja varijable ch na konzoli.
  17. Kraj dok tijela.
  18. Kraj tijela else naredbe.
  19. Pozovite funkciju close() da biste zatvorili datoteku.
  20. Program mora vratiti vrijednost nakon uspješnog završetka.
  21. Kraj tijela funkcije main().

rezime

  • Uz rukovanje datotekama, izlaz programa može se poslati i pohraniti u datoteku.
  • Broj operacija se zatim može primijeniti na podatke dok su u datoteci.
  • Tok je apstrakcija koja predstavlja uređaj na kojem se izvode ulazno/izlazne operacije.
  • Tok se može predstaviti kao odredište ili kao izvor znakova neodređene duljine.
  • Knjižnica fstream pruža C++ programeri s metodama za rukovanje datotekama.
  • Da biste koristili biblioteku, morate je uključiti u svoj program koristeći #include direktivu pretprocesora.