C ++

Kako čitati i pisati u datoteku na C ++

Kako čitati i pisati u datoteku na C ++

U ovom ćemo vam članku na nekoliko primjera pokazati kako čitati i pisati u datoteku na programskom jeziku C ++. Da bismo razumjeli operacije datoteka C ++ poput čitanja i pisanja, prvo moramo razumjeti koncept toka u C-u++.

Što je tok?

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 kao što je tipkovnica, dok se izlazni tok koristi za upisivanje podataka na vanjski izlazni uređaj kao što je monitor. Datoteka se može smatrati ulaznim i izlaznim izvorom.

U C ++-u koristimo tok za slanje ili primanje podataka iz ili iz vanjskog izvora.

Ugrađene klase možemo koristiti za pristup ulazno / izlaznom toku, tj.e., "Ios".

Evo hijerarhije klase toka programskog jezika C ++:

Objekti „cin“ i „cout“ koriste se za čitanje podataka s tipkovnice i za prikaz izlaza na monitoru. Uz to, "ifstream", što znači "ulazni tok datoteke", koristi se za čitanje toka podataka iz datoteke, a "ofstream", što znači "izlazni tok datoteke", koristi se za pisanje toka podataka u datoteku.

„Iostram.Datoteka h ”sadrži sve potrebne standardne klase ulazno / izlaznih tokova u programskom jeziku C ++.

Primjeri

Sada kada razumijete osnove streamova, razmotrit ćemo sljedeće primjere koji će vam pomoći da bolje razumijete operacije datoteka u C ++:

Primjer 1: Otvorite i zatvorite datoteku

U ovom primjeru programa pokazat ćemo kako otvoriti / stvoriti datoteku i kako je zatvoriti u C-u++. Kao što možete vidjeti u donjem programu, uključili smo biblioteku potrebnu za rad s datotekama.

Da bismo otvorili i zatvorili datoteku, potreban nam je objekt protoka. Zatim, da bismo čitali ili pisali u datoteku, moramo je otvoriti. Uključili smo datoteku zaglavlja fstream u redak broj 1 kako bismo mogli pristupiti klasi klase.

Proglasili smo myFile_Handler kao objekt protoka unutar glavne funkcije. Tada možemo koristiti funkciju open () za stvaranje prazne datoteke i funkciju close () za zatvaranje datoteke.

#include
pomoću prostora imena std;
int main ()

ofstream myFile_Handler;
// Datoteka otvorena
myFile_Handler.otvori ("Datoteka_1.txt ");
// Zatvaranje datoteke
myFile_Handler.Zatvoriti();
return 0;

Sada ćemo sastaviti program i ispitati rezultate. Kao što možete vidjeti u donjem izlaznom prozoru, “File_1.txt ”datoteka je stvorena nakon izvršavanja programa. Veličina datoteke je nula jer u nju nismo upisali nikakav sadržaj.

Primjer 2: Zapis u datoteku

U prethodnom primjeru programa pokazali smo vam kako otvoriti datoteku i kako je zatvoriti. Sada ćemo vam pokazati kako nešto zapisati u datoteku.

U datoteku možemo pisati pomoću operatora za umetanje toka, tj.e., “<<”. 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.

#include
pomoću prostora imena std;
int main ()

ofstream myFile_Handler;
// Datoteka otvorena
myFile_Handler.otvori ("Datoteka_1.txt ");
// Zapis u datoteku
myFile_Handler << "This is a sample test File. " << endl;
myFile_Handler << "This is the second line of the file. " << endl;
// Zatvaranje datoteke
myFile_Handler.Zatvoriti();
return 0;

Sada ćemo sastaviti gornji program i izvršiti ga. Kao što vidite u nastavku, uspješno smo upisali u datoteku File_1.txt.

Primjer 3: Čitanje iz datoteke

U prethodnim primjerima pokazali smo vam kako zapisivati ​​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.e., monitor.

Koristimo funkciju getline () za čitanje kompletnog retka iz datoteke, a zatim "cout" za ispis retka na monitor.

#include
#include
#include
pomoću prostora imena std;
int main ()

ifstream myFile_Handler;
niz myLine;
// Datoteka otvorena u načinu čitanja
myFile_Handler.otvori ("Datoteka_1.txt ");
if (myFile_Handler.otvoreno je())

// Nastavite čitati datoteku
while (getline (myFile_Handler, myLine))

// ispis crte na standardni izlaz
cout << myLine << endl;

// Zatvaranje datoteke
myFile_Handler.Zatvoriti();

drugo

cout << "Unable to open the file!";

return 0;

Sad ćemo ispisati sadržaj datoteke_1.txt pomoću sljedeće naredbe: mačka File_1.txt. Jednom kad kompajliramo i izvršimo program, jasno je da se izlaz podudara sa sadržajem datoteke. Stoga smo datoteku uspješno pročitali i sadržaj datoteke ispisali na monitor.

Primjer 4: Čitanje i pisanje u datoteku

Do sada smo vam pokazali kako otvoriti, čitati, pisati i zatvarati datoteku. U C ++-u također možemo istovremeno čitati i pisati u datoteku. Da bismo i čitali i pisali u datoteku, moramo dobiti objekt fstream i otvoriti datoteku u načinu “ios :: in” i “ios :: out”.

U ovom primjeru prvo zapisujemo neki sadržaj u datoteku. Zatim čitamo podatke iz datoteke i ispisujemo ih na monitor.

#include
#include
#include
pomoću prostora imena std;
int main ()

fstream myFile_Handler;
niz myLine;
// Datoteka otvorena
myFile_Handler.otvori ("Datoteka_1.txt ", ios :: in | ios :: out);
// Provjeri je li datoteka otvorena
ako(!myFile_Handler)

cout << "File did not open!";
izlaz (1);

// Zapis u datoteku
myFile_Handler << "1. This is another sample test File. " << endl;
myFile_Handler << "2. This is the second line of the file. " << endl;
myFile_Handler.tražiti (ios :: prositi);
// Pročitajte datoteku
if (myFile_Handler.otvoreno je())

// Nastavite čitati datoteku
while (getline (myFile_Handler, myLine))

// ispis crte na standardni izlaz
cout << myLine << endl;

// Zatvaranje datoteke
myFile_Handler.Zatvoriti();

drugo

cout << "Unable to open the file!";

myFile_Handler.Zatvoriti();
return 0;

Sada ćemo sastaviti i izvršiti program.

Primjer 5: Čitanje i pisanje u binarnu datoteku

U ovom ćemo primjeru deklarirati klasu, a zatim objekt zapisati u binarnu datoteku. Da bismo pojednostavili ovaj primjer, deklarirali smo klasu Employee s javnom varijablom emp_id. Zatim ćemo pročitati binarnu datoteku i ispisati izlaz na monitor.

#include
#include
pomoću prostora imena std;
razred Zaposlenik

javnost:
int emp_id;
;
int main ()

ofstream binOutFile_Handler;
ifstream binInFile_Handler;
Zaposlenik empObj_W, empObj_R;
// Datoteka otvorena
binOutFile_Handler.otvoren ("Zaposlenik.dat ", ios :: out | ios :: binarni);
// Provjeri je li datoteka otvorena
ako(!binOutFile_Handler)

cout << "File did not open!";
izlaz (1);

// Inicijalizirajte empObj_W
empObj_W.emp_id = 1512;
// Zapis u datoteku
binOutFile_Handler.write ((char *) & empObj_W, sizeof (Zaposlenik));
binOutFile_Handler.Zatvoriti();
ako(!binOutFile_Handler.dobro())

cout << "Error occured during writing the binary file!" << endl;
izlaz (2);

// Čitajmo sada zaposlenika.dat datoteka
binInFile_Handler.otvoren ("Zaposlenik.dat ", ios :: in | ios :: binarni);
// Provjeri je li datoteka otvorena
ako(!binInFile_Handler)

cout << "File did not open!";
izlaz (3);

// Pročitajte sadržaj binarne datoteke
binInFile_Handler.read ((char *) & empObj_R, sizeof (zaposlenik));
binInFile_Handler.Zatvoriti();
ako(!binInFile_Handler.dobro())

cout << "Error occured during reading the binary file!" << endl;
izlaz (4);

// Ispis rezultata emObj_R
cout << "Details of the Employee : " << endl;
cout << "Employee ID : " << empObj_R.emp_id << endl;
return 0;

Zaključak

Datoteke se uglavnom koriste za pohranu podataka i igraju važnu ulogu u stvarnom programiranju. U ovom smo članku pokazali vam kako se služiti raznim operacijama datoteka s programskim jezikom C ++ radeći kroz nekoliko primjera. Nadalje, pokazali smo vam kako čitati i pisati podatke u tekstualne i binarne datoteke.

Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...