Cum se citește și se scrie într-un fișier în C ++

How Read Write File C



În acest articol, vă vom arăta cum să citiți și să scrieți într-un fișier în limbajul de programare C ++ utilizând mai multe exemple. Pentru a înțelege operațiile de fișiere C ++, cum ar fi citirea și scrierea, trebuie să înțelegem mai întâi conceptul de flux în C ++.

Ce este un flux?

Un flux este pur și simplu un flux de date sau caractere. Există două tipuri de fluxuri: fluxuri de intrare și fluxuri de ieșire. Un flux de intrare este utilizat pentru a citi datele de pe un dispozitiv de intrare extern, cum ar fi o tastatură, în timp ce un flux de ieșire este utilizat pentru a scrie date pe dispozitivul de ieșire extern, cum ar fi un monitor. Un fișier poate fi considerat atât o sursă de intrare, cât și o sursă de ieșire.









În C ++, folosim un flux pentru a trimite sau a primi date către sau de la o sursă externă.



Putem folosi clase încorporate pentru a accesa un flux de intrare / ieșire, adică ios.





Iată ierarhia clasei de flux a limbajului de programare C ++:



Obiectele cin și cout sunt utilizate pentru a citi datele de la tastatură și, respectiv, pentru a afișa ieșirea pe monitor. În plus, ifstream, care înseamnă fluxul de fișiere de intrare, este utilizat pentru a citi un flux de date dintr-un fișier, iar ofstream, care înseamnă fluxul de fișiere de ieșire, este utilizat pentru a scrie un flux de date într-un fișier.

Fișierul iostram.h conține toate clasele standard necesare de flux de intrare / ieșire în limbajul de programare C ++.

Exemple

Acum că înțelegeți noțiunile de bază ale fluxurilor, vom discuta următoarele exemple pentru a vă ajuta să înțelegeți mai bine operațiile de fișiere în C ++:

  • Exemplul 1: Deschideți și închideți un fișier
  • Exemplul 2: Scrieți într-un fișier
  • Exemplul 3: Citiți dintr-un fișier
  • Exemplul 4: Citiți și scrieți într-un fișier
  • Exemplul 5: Citiți și scrieți într-un fișier binar

Exemplul 1: Deschideți și închideți un fișier

În acest exemplu de program, vom demonstra cum să deschideți / creați un fișier și cum să închideți fișierul în C ++. După cum puteți vedea în programul de mai jos, am inclus biblioteca necesară pentru operațiile de fișiere.

Pentru a deschide și închide un fișier, avem nevoie de un obiect ofstream. Apoi, pentru a citi sau a scrie într-un fișier, trebuie să deschidem fișierul. Am inclus fișierul antet fstream la linia numărul-1, astfel încât să putem accesa clasa ofstream.

Am declarat un myFile_Handler ca obiect ofstream în interiorul funcției principale. Putem apoi folosi funcția open () pentru a crea un fișier gol și funcția close () pentru a închide fișierul.

#include

folosind spațiu de numeore;

intprincipal()
{
ofstream MyFile_Handler;

// Fișier deschis
MyFile_Handler.deschis(„Fișier_1.txt”);

// Închidere fișier
MyFile_Handler.închide();
întoarcere 0;
}

Acum, vom compila programul și vom examina rezultatul. După cum puteți vedea în fereastra de ieșire de mai jos, fișierul File_1.txt a fost creat după executarea programului. Dimensiunea fișierului este zero, deoarece nu am scris niciun conținut în fișier.

Exemplul 2: Scrieți într-un fișier

În exemplul anterior de program, v-am arătat cum să deschideți un fișier și cum să închideți fișierul. Acum, vă vom arăta cum să scrieți ceva într-un fișier.

Putem scrie într-un fișier folosind operatorul de inserare a fluxului, adică<<. 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

folosind spațiu de numeore;

intprincipal()
{
ofstream MyFile_Handler;
// Fișier deschis
MyFile_Handler.deschis(„Fișier_1.txt”);

// Scrieți în fișier
MyFile_Handler<< „Acesta este un exemplu de fișier de testare. ' <<endl;
MyFile_Handler<< „Aceasta este a doua linie a fișierului. ' <<endl;

// Închidere fișier
MyFile_Handler.închide();
întoarcere 0;
}

Acum, vom compila programul de mai sus și îl vom executa. După cum puteți vedea mai jos, am scris cu succes în fișierul File_1.txt.

Exemplul 3: Citiți dintr-un fișier

În exemplele anterioare, v-am arătat cum să scrieți conținut într-un fișier. Acum, să citim conținutul din fișierul pe care l-am creat în Exemplul-2 și să afișăm conținutul pe dispozitivul de ieșire standard, adică pe monitor.

Folosim funcția getline () pentru a citi linia completă din fișier și apoi cout pentru a imprima linia pe monitor.

#include
#include
#include

folosind spațiu de numeore;

intprincipal()
{
ifstream myFile_Handler;
înșirați MyLine;

// Deschidere fișier în modul de citire
MyFile_Handler.deschis(„Fișier_1.txt”);

dacă(MyFile_Handler.este deschis())
{
// Continuați să citiți fișierul
in timp ce(getline(myFile_Handler, myLine))
{
// imprimați linia pe ieșirea standard
cost <<Linia mea<<endl;
}
// Închidere fișier
MyFile_Handler.închide();
}
altceva
{
cost << „Imposibil de deschis fișierul!”;
}
întoarcere 0;
}

Acum, vom imprima conținutul File_1.txt folosind următoarea comandă: cat File_1.txt. Odată ce compilăm și executăm programul, este clar că rezultatul se potrivește cu conținutul fișierului. Prin urmare, am citit cu succes fișierul și am imprimat conținutul fișierului pe monitor.

Exemplul 4: Citiți și scrieți într-un fișier

Până în prezent, v-am arătat cum să deschideți, să citiți, să scrieți și să închideți un fișier. În C ++, putem citi și scrie într-un fișier în același timp. Pentru a citi și a scrie într-un fișier, trebuie să obținem un obiect fstream și să deschidem fișierul în modul ios :: in și ios :: out.

În acest exemplu, mai întâi scriem un conținut în fișier. Apoi, citim datele din fișier și le imprimăm pe monitor.

#include
#include
#include

folosind spațiu de numeore;

intprincipal()
{
fstream myFile_Handler;
înșirați MyLine;

// Fișier deschis
MyFile_Handler.deschis(„Fișier_1.txt”, ios::în |ios::afară);

// Verificați dacă fișierul s-a deschis
dacă(!MyFile_Handler)
{
cost << „Fișierul nu s-a deschis!”;
Ieșire(1);
}

// Scrieți în fișier
MyFile_Handler<< „1. Acesta este un alt exemplu de fișier de testare. ' <<endl;
MyFile_Handler<< „2. Aceasta este a doua linie a fișierului. ' <<endl;

MyFile_Handler.seekg(ios::implora);

// Citiți fișierul
dacă(MyFile_Handler.este deschis())
{
// Continuați să citiți fișierul
in timp ce(getline(myFile_Handler, myLine))
{
// imprimați linia pe ieșirea standard
cost <<Linia mea<<endl;
}

// Închidere fișier
MyFile_Handler.închide();
}
altceva
{
cost << „Imposibil de deschis fișierul!”;
}
MyFile_Handler.închide();
întoarcere 0;
}

Acum, vom compila și executa programul.

Exemplul 5: Citiți și scrieți într-un fișier binar

În acest exemplu, vom declara o clasă și apoi vom scrie obiectul într-un fișier binar. Pentru a simplifica acest exemplu, am declarat clasa Angajat cu o variabilă publică emp_id. Apoi, vom citi fișierul binar și vom imprima ieșirea pe monitor.

#include
#include

folosind spațiu de numeore;

clasăAngajat
{
public:
intemp_id;
};

intprincipal()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

Angajat empObj_W, empObj_R;

// Fișier deschis
binOutFile_Handler.deschis(„angajat.dat”, ios::afară |ios::binar);

// Verificați dacă fișierul s-a deschis
dacă(!binOutFile_Handler)
{
cost << „Fișierul nu s-a deschis!”;
Ieșire(1);
}

// Inițializați empObj_W
empObj_W.emp_id = 1512;

// Scrieți în fișier
binOutFile_Handler.scrie((char *) &empObj_W,mărimea(Angajat));
binOutFile_Handler.închide();

dacă(!binOutFile_Handler.bun())
{
cost << „A apărut o eroare în timpul scrierii fișierului binar!” <<endl;
Ieșire(2);
}

// Acum, să citim fișierul angajat.dat
binInFile_Handler.deschis(„angajat.dat”, ios::în |ios::binar);
// Verificați dacă fișierul s-a deschis
dacă(!binInFile_Handler)
{
cost << „Fișierul nu s-a deschis!”;
Ieșire(3);
}

// Citiți conținutul fișierului binar
binInFile_Handler.citit((char *) &empObj_R,mărimea(Angajat));
binInFile_Handler.închide();

dacă(!binInFile_Handler.bun())
{
cost << „A apărut o eroare la citirea fișierului binar!” <<endl;
Ieșire(4);
}

// Imprimați rezultatul empObj_R
cost << „Detalii despre angajat:” <<endl;
cost << 'Card de identitate al angajatului : ' <<empObj_R.emp_id <<endl;

întoarcere 0;
}

Concluzie

Fișierele sunt utilizate în principal pentru stocarea datelor și joacă un rol important în programarea din lumea reală. În acest articol, v-am arătat cum să utilizați diferite operații de fișiere cu limbajul de programare C ++, lucrând mai multe exemple. Mai mult, v-am arătat cum să citiți și să scrieți date atât în ​​fișiere text, cât și în fișiere binare.