Kako brati in pisati v datoteko v C ++

How Read Write File C



V tem članku vam bomo z uporabo več primerov pokazali, kako brati in pisati v datoteko v programskem jeziku C ++. Za razumevanje datotečnih operacij C ++, kot sta branje in pisanje, moramo najprej razumeti pojem toka v C ++.

Kaj je tok?

Tok je preprosto tok podatkov ali znakov. Obstajata dve vrsti tokov: vhodni in izhodni. Vhodni tok se uporablja za branje podatkov z zunanje vhodne naprave, kot je tipkovnica, medtem ko se izhodni tok uporablja za pisanje podatkov na zunanjo izhodno napravo, kot je monitor. Datoteko lahko obravnavamo kot vhodni in izhodni vir.









V C ++ uporabljamo tok za pošiljanje ali sprejemanje podatkov v ali iz zunanjega vira.



Za dostop do vhodno/izhodnega toka, to je ios, lahko uporabimo vgrajene razrede.





Tu je hierarhija razredov tokov programskega jezika C ++:



Predmeti cin in cout se uporabljajo za branje podatkov s tipkovnice in za prikaz izpisa na monitorju. Poleg tega se ifstream, ki pomeni vhodni datotečni tok, uporablja za branje toka podatkov iz datoteke, ofstream, ki pomeni izhodni datotečni tok, pa se uporablja za zapis podatkovnega toka v datoteko.

Datoteka iostram.h vsebuje vse zahtevane standardne razrede vhodnih/izhodnih tokov v programskem jeziku C ++.

Primeri

Zdaj, ko razumete osnove tokov, bomo razpravljali o naslednjih primerih, ki vam bodo pomagali bolje razumeti delovanje datotek v C ++:

  • Primer 1: Odpiranje in zapiranje datoteke
  • Primer 2: Zapišite v datoteko
  • Primer 3: Branje iz datoteke
  • Primer 4: Branje in pisanje v datoteko
  • Primer 5: Branje in pisanje v binarno datoteko

Primer 1: Odpiranje in zapiranje datoteke

V tem primeru programa bomo pokazali, kako odpreti/ustvariti datoteko in kako zapreti datoteko v C ++. Kot lahko vidite v spodnjem programu, smo vključili knjižnico, potrebno za delovanje datotek.

Za odpiranje in zapiranje datoteke potrebujemo objekt ofstream. Za branje ali pisanje v datoteko moramo datoteko odpreti. Datoteko glave fstream smo vključili v vrstico številka 1, da lahko dostopamo do razreda onstream.

MyFile_Handler smo razglasili za objekt ofstream znotraj glavne funkcije. Nato lahko uporabimo funkcijo open () za ustvarjanje prazne datoteke in funkcijo close () za zapiranje datoteke.

#vključi

z uporabo imenski prostorure;

intglavni()
{
ofstream myFile_Handler;

// Datoteka odprta
myFile_Handler.odprto('File_1.txt');

// Datoteka Zapri
myFile_Handler.blizu();
vrnitev 0;
}

Zdaj bomo sestavili program in preučili rezultat. Kot lahko vidite v spodnjem izhodnem oknu, je bila datoteka File_1.txt ustvarjena po izvedbi programa. Velikost datoteke je nič, saj v datoteko nismo zapisali nobene vsebine.

Primer 2: Zapišite v datoteko

V prejšnjem primeru programa smo vam pokazali, kako odpreti datoteko in kako jo zapreti. Zdaj vam bomo pokazali, kako nekaj zapisati v datoteko.

V datoteko lahko zapišemo z operaterjem vstavljanja toka, 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.

#vključi

z uporabo imenski prostorure;

intglavni()
{
ofstream myFile_Handler;
// Datoteka odprta
myFile_Handler.odprto('File_1.txt');

// Zapis v datoteko
myFile_Handler<< 'To je vzorčna preskusna datoteka. ' <<endl;
myFile_Handler<< 'To je druga vrstica datoteke. ' <<endl;

// Datoteka Zapri
myFile_Handler.blizu();
vrnitev 0;
}

Zdaj bomo zgornji program prevedli in ga izvedli. Kot lahko vidite spodaj, smo uspešno zapisali v datoteko File_1.txt.

Primer 3: Branje iz datoteke

V prejšnjih primerih smo vam pokazali, kako zapisati vsebino v datoteko. Zdaj pa preberemo vsebino iz datoteke, ki smo jo ustvarili v primeru-2, in vsebino prikažemo na standardni izhodni napravi, to je monitorju.

Funkcijo getline () uporabljamo za branje celotne vrstice iz datoteke in nato cout za tiskanje vrstice na monitor.

#vključi
#vključi
#vključi

z uporabo imenski prostorure;

intglavni()
{
ifstream myFile_Handler;
string myLine;

// Datoteka se odpre v načinu branja
myFile_Handler.odprto('File_1.txt');

če(myFile_Handler.je_open())
{
// Nadaljujte z branjem datoteke
medtem(getline(myFile_Handler, myLine))
{
// natisnemo vrstico na standardni izhod
stroški <<myLine<<endl;
}
// Datoteka Zapri
myFile_Handler.blizu();
}
drugače
{
stroški << 'Datoteke ni mogoče odpreti!';
}
vrnitev 0;
}

Zdaj bomo natisnili vsebino File_1.txt z naslednjim ukazom: cat File_1.txt. Ko program sestavimo in izvedemo, je jasno, da se rezultat ujema z vsebino datoteke. Zato smo datoteko uspešno prebrali in vsebino datoteke natisnili na monitor.

Primer 4: Branje in pisanje v datoteko

Doslej smo vam pokazali, kako odpreti, prebrati, pisati in zapreti datoteko. V C ++ lahko hkrati beremo in pišemo v datoteko. Za branje in pisanje v datoteko moramo dobiti objekt fstream in datoteko odpreti v načinu ios :: in in ios :: out.

V tem primeru najprej zapišemo nekaj vsebine v datoteko. Nato preberemo podatke iz datoteke in jih natisnemo na monitor.

#vključi
#vključi
#vključi

z uporabo imenski prostorure;

intglavni()
{
fstream myFile_Handler;
string myLine;

// Datoteka odprta
myFile_Handler.odprto('File_1.txt', ios::v |ios::ven);

// Preverite, ali se je datoteka odprla
če(!myFile_Handler)
{
stroški << 'Datoteka se ni odprla!';
izhod(1);
}

// Zapis v datoteko
myFile_Handler<< '1. To je še en vzorec testne datoteke. ' <<endl;
myFile_Handler<< '2. To je druga vrstica datoteke. ' <<endl;

myFile_Handler.išči(ios::prosjačiti);

// Preberite datoteko
če(myFile_Handler.je_open())
{
// Nadaljujte z branjem datoteke
medtem(getline(myFile_Handler, myLine))
{
// natisnemo vrstico na standardni izhod
stroški <<myLine<<endl;
}

// Datoteka Zapri
myFile_Handler.blizu();
}
drugače
{
stroški << 'Datoteke ni mogoče odpreti!';
}
myFile_Handler.blizu();
vrnitev 0;
}

Zdaj bomo program sestavili in izvedli.

Primer 5: Branje in pisanje v binarno datoteko

V tem primeru bomo razglasili razred in nato objekt zapisali v binarno datoteko. Za poenostavitev tega primera smo razglasili razred Employee z javno spremenljivko emp_id. Nato bomo prebrali binarno datoteko in izpis natisnili na monitor.

#vključi
#vključi

z uporabo imenski prostorure;

razredZaposleni
{
javno:
intemp_id;
};

intglavni()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

Zaposleni empObj_W, empObj_R;

// Datoteka odprta
binOutFile_Handler.odprto('zaposleni.dat', ios::ven |ios::binarni);

// Preverite, ali se je datoteka odprla
če(!binOutFile_Handler)
{
stroški << 'Datoteka se ni odprla!';
izhod(1);
}

// Inicializirajte empObj_W
empObj_W.emp_id = 1512;

// Zapis v datoteko
binOutFile_Handler.pisati((char *) &empObj_W,velikostof(Zaposleni));
binOutFile_Handler.blizu();

če(!binOutFile_Handler.dobro())
{
stroški << 'Pri pisanju binarne datoteke je prišlo do napake!' <<endl;
izhod(2);
}

// Zdaj pa preberemo datoteko Employee.dat
binInFile_Handler.odprto('zaposleni.dat', ios::v |ios::binarni);
// Preverite, ali se je datoteka odprla
če(!binInFile_Handler)
{
stroški << 'Datoteka se ni odprla!';
izhod(3);
}

// Preberite vsebino binarne datoteke
binInFile_Handler.prebrati((char *) &empObj_R,velikostof(Zaposleni));
binInFile_Handler.blizu();

če(!binInFile_Handler.dobro())
{
stroški << 'Pri branju binarne datoteke je prišlo do napake!' <<endl;
izhod(4);
}

// Natisnite izhod empObj_R
stroški << 'Podrobnosti o zaposlenem:' <<endl;
stroški << 'ID zaposlenega:' <<empObj_R.emp_id <<endl;

vrnitev 0;
}

Zaključek

Datoteke se večinoma uporabljajo za shranjevanje podatkov in imajo pomembno vlogo pri programiranju v resničnem svetu. V tem članku smo vam pokazali, kako uporabljati različne datotečne operacije s programskim jezikom C ++, tako da ste obravnavali več primerov. Poleg tega smo vam pokazali, kako berete in zapisujete podatke v besedilne datoteke in binarne datoteke.