Kako čitati i pisati u datoteku na C ++

How Read Write File C

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či

koristeć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či

koristeć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.