U ovom ćemo vam članku pomoću nekoliko primjera pokazati kako čitati i pisati u datoteku u programskom jeziku C ++. Da bismo razumjeli operacije datoteka C ++ poput čitanja i pisanja, prvo moramo razumjeti koncept toka u C ++.
Što je Stream?
Tok je jednostavno protok podataka ili znakova. Postoje dvije vrste tokova: ulazni i izlazni. Ulazni tok koristi se za čitanje podataka s vanjskog ulaznog uređaja, poput tipkovnice, dok se izlazni tok koristi za upisivanje podataka na vanjski izlazni uređaj, poput monitora. Datoteka se može smatrati i ulaznim i izlaznim izvorom.
U C ++ -u koristimo stream za slanje ili primanje podataka u ili iz vanjskog izvora.
Možemo koristiti ugrađene klase za pristup ulazno/izlaznom toku, tj. Ios.
Evo hijerarhije klasa toka programskog jezika C ++:
Objekti cin i cout koriste se za čitanje podataka s tipkovnice i za prikaz izlaza na monitoru. Osim toga, ifstream, koji označava ulazni tok datoteke, koristi se za čitanje toka podataka iz datoteke, a ofstream, koji označava izlazni tok datoteka, koristi se za pisanje toka podataka u datoteku.
Datoteka iostram.h sadrži sve potrebne standardne klase ulazno/izlaznog toka u programskom jeziku C ++.
Primjeri
Sada kada razumijete osnove tokova, raspravljat ćemo o sljedećim primjerima koji će vam pomoći da bolje razumijete operacije s datotekama u C ++:
- Primjer 1: Otvaranje i zatvaranje datoteke
- Primjer 2: Zapišite u datoteku
- Primjer 3: Čitanje iz datoteke
- Primjer 4: Čitanje i pisanje u datoteku
- Primjer 5: Čitanje i pisanje u binarnu datoteku
Primjer 1: Otvaranje i zatvaranje datoteke
U ovom primjeru programa pokazat ćemo kako otvoriti/stvoriti datoteku i kako je zatvoriti u C ++. Kao što možete vidjeti u donjem programu, uključili smo knjižnicu potrebnu za rad s datotekama.
Za otvaranje i zatvaranje datoteke potreban nam je objekt ofstream. Zatim, za čitanje ili pisanje u datoteku, moramo otvoriti datoteku. Uključili smo datoteku zaglavlja fstream u redak broj 1 kako bismo mogli pristupiti klasi klase.
Proglasili smo myFile_Handler kao objekt ofstream unutar glavne funkcije. Zatim možemo koristiti funkciju open () za stvaranje prazne datoteke i funkciju close () za zatvaranje datoteke.
#uključikoristeći imenski prostorsati;
intglavni()
{
ofstream myFile_Handler;
// Datoteka otvorena
myFile_Handler.otvorena('File_1.txt');
// Datoteka Zatvori
myFile_Handler.Zatvoriti();
povratak 0;
}
Sada ćemo sastaviti program i ispitati izlaz. Kao što možete vidjeti u donjem prozoru za izlaz, datoteka File_1.txt stvorena je nakon izvršavanja programa. Veličina datoteke je nula jer u datoteku nismo napisali nikakav sadržaj.
Primjer 2: Zapišite u datoteku
U prethodnom primjeru programa pokazali smo vam kako otvoriti datoteku i kako je zatvoriti. Sada ćemo vam pokazati kako nešto napisati u datoteku.
U datoteku možemo pisati pomoću operatora umetanja streama, tj.<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.
#uključikoristeći imenski prostorsati;
intglavni()
{
ofstream myFile_Handler;
// Datoteka otvorena
myFile_Handler.otvorena('File_1.txt');
// Zapisivanje u datoteku
myFile_Handler<< 'Ovo je uzorak testne datoteke. ' <<endl;
myFile_Handler<< 'Ovo je drugi redak datoteke. ' <<endl;
// Datoteka Zatvori
myFile_Handler.Zatvoriti();
povratak 0;
}
Sada ćemo sastaviti gornji program i izvršiti ga. Kao što vidite u nastavku, uspješno smo pisali u datoteku File_1.txt.
Primjer 3: Čitanje iz datoteke
U prethodnim primjerima pokazali smo vam kako zapisati sadržaj u datoteku. Sada, pročitajmo sadržaj iz datoteke koju smo stvorili u Primjeru 2 i prikažimo sadržaj na standardnom izlaznom uređaju, tj. Monitoru.
Koristimo funkciju getline () za čitanje cijelog retka iz datoteke, a zatim cout za ispis retka na monitoru.
#uključi#uključi
#uključi
koristeći imenski prostorsati;
intglavni()
{
ifstream myFile_Handler;
string myLine;
// Datoteka otvorena u načinu čitanja
myFile_Handler.otvorena('File_1.txt');
ako(myFile_Handler.otvoreno je())
{
// Nastavite čitati datoteku
dok(getline(myFile_Handler, myLine))
{
// ispisati redak na standardnom ispisu
trošak <<myLine<<endl;
}
// Datoteka Zatvori
myFile_Handler.Zatvoriti();
}
drugo
{
trošak << 'Nije moguće otvoriti datoteku!';
}
povratak 0;
}
Sada ćemo ispisati sadržaj File_1.txt pomoću sljedeće naredbe: cat File_1.txt. Nakon što sastavimo i izvedemo program, jasno je da izlaz odgovara sadržaju datoteke. Stoga smo uspješno pročitali datoteku i ispisali sadržaj datoteke na monitor.
Primjer 4: Čitanje i pisanje u datoteku
Do sada smo vam pokazali kako otvoriti, čitati, pisati i zatvoriti datoteku. U C ++ -u možemo istovremeno čitati i pisati u datoteku. Za čitanje i pisanje u datoteku moramo nabaviti fstream objekt i otvoriti datoteku u ios :: in i ios :: out načinima.
U ovom primjeru prvo zapisujemo neki sadržaj u datoteku. Zatim čitamo podatke iz datoteke i ispisujemo ih na monitor.
#uključi#uključi
#uključi
koristeći imenski prostorsati;
intglavni()
{
fstream myFile_Handler;
string myLine;
// Datoteka otvorena
myFile_Handler.otvorena('File_1.txt', ios::u |ios::van);
// Provjerite je li se datoteka otvorila
ako(!myFile_Handler)
{
trošak << 'Datoteka se nije otvorila!';
Izlaz(1);
}
// Zapisivanje u datoteku
myFile_Handler<< '1. Ovo je još jedan uzorak testne datoteke. ' <<endl;
myFile_Handler<< '2. Ovo je drugi redak datoteke. ' <<endl;
myFile_Handler.tražiti(ios::prositi);
// Pročitajte datoteku
ako(myFile_Handler.otvoreno je())
{
// Nastavite čitati datoteku
dok(getline(myFile_Handler, myLine))
{
// ispisati redak na standardnom ispisu
trošak <<myLine<<endl;
}
// Datoteka Zatvori
myFile_Handler.Zatvoriti();
}
drugo
{
trošak << 'Nije moguće otvoriti datoteku!';
}
myFile_Handler.Zatvoriti();
povratak 0;
}
Sada ćemo sastaviti i izvršiti program.
Primjer 5: Čitanje i pisanje u binarnu datoteku
U ovom primjeru ćemo proglasiti klasu, a zatim zapisati objekt u binarnu datoteku. Kako bismo pojednostavili ovaj primjer, klasu Employee proglasili smo javnom varijablom emp_id. Zatim ćemo pročitati binarnu datoteku i ispisati izlaz na monitor.
#uključi#uključi
koristeći imenski prostorsati;
razredZaposlenik
{
javnost:
intemp_id;
};
intglavni()
{
izvan toka binOutFile_Handler;
ifstream binInFile_Handler;
Zaposlenik empObj_W, empObj_R;
// Datoteka otvorena
binOutFile_Handler.otvorena('zaposlenik.dat', ios::van |ios::binarni);
// Provjerite je li se datoteka otvorila
ako(!binOutFile_Handler)
{
trošak << 'Datoteka se nije otvorila!';
Izlaz(1);
}
// Inicijalizacija empObj_W
empObj_W.emp_id = 1512;
// Zapisivanje u datoteku
binOutFile_Handler.pisati((char *) &empObj_W,veličina(Zaposlenik));
binOutFile_Handler.Zatvoriti();
ako(!binOutFile_Handler.dobro())
{
trošak << 'Došlo je do pogreške tijekom pisanja binarne datoteke!' <<endl;
Izlaz(2);
}
// Sada pročitajmo datoteku Employee.dat
binInFile_Handler.otvorena('zaposlenik.dat', ios::u |ios::binarni);
// Provjerite je li se datoteka otvorila
ako(!binInFile_Handler)
{
trošak << 'Datoteka se nije otvorila!';
Izlaz(3);
}
// Pročitajte sadržaj binarne datoteke
binInFile_Handler.čitati((char *) &empObj_R,veličina(Zaposlenik));
binInFile_Handler.Zatvoriti();
ako(!binInFile_Handler.dobro())
{
trošak << 'Došlo je do pogreške tijekom čitanja binarne datoteke!' <<endl;
Izlaz(4);
}
// Ispis izlaz empObj_R
trošak << 'Pojedinosti o zaposleniku:' <<endl;
trošak << 'ID zaposlenika:' <<empObj_R.emp_id <<endl;
povratak 0;
}
Zaključak
Datoteke se uglavnom koriste za pohranu podataka i igraju važnu ulogu u programiranju u stvarnom svijetu. U ovom smo članku kroz nekoliko primjera pokazali kako se koriste različite operacije s datotekama s programskim jezikom C ++. Nadalje, pokazali smo vam kako čitati i upisivati podatke u tekstualne datoteke i binarne datoteke.