C ++

Kuinka lukea ja kirjoittaa tiedostoon C ++ ssa

Kuinka lukea ja kirjoittaa tiedostoon C ++ ssa

Tässä artikkelissa aiomme näyttää, kuinka voit lukea ja kirjoittaa tiedostoon C ++ - ohjelmointikielellä käyttämällä useita esimerkkejä. Ymmärtääksemme C ++ -tiedostotoiminnot, kuten lukeminen ja kirjoittaminen, meidän on ensin ymmärrettävä C-virran käsite++.

Mikä on virta?

Stream on yksinkertaisesti tiedon tai merkkien virta. Virtoja on kahta tyyppiä: tulovirrat ja lähtövirrat. Tulovirtaa käytetään tietojen lukemiseen ulkoisesta syöttölaitteesta, kuten näppäimistöstä, kun taas lähtövirtaa käytetään tietojen kirjoittamiseen ulkoiseen lähtölaitteeseen, kuten näyttöön. Tiedostoa voidaan pitää sekä tulo- että lähtölähteenä.

C ++: ssa käytämme virtaa lähettämään tai vastaanottamaan tietoja ulkoiseen lähteeseen tai ulkoisesta lähteestä.

Voimme käyttää sisäänrakennettuja luokkia päästäksesi sisääntulo- / lähtövirtaan, ts.e., "Ios".

Tässä on C ++ - ohjelmointikielen stream-luokan hierarkia:

Cin- ja cout-objekteja käytetään tietojen lukemiseen näppäimistöltä ja vastausten näyttämiseen näytöllä. Lisäksi "ifstream", joka tarkoittaa "input file stream", käytetään lukemaan tietovirta tiedostosta, ja "ofstream", joka tarkoittaa "output file stream", käytetään datavirran kirjoittamiseen. tiedostoon.

"Iostram.h ”-tiedosto sisältää kaikki vaaditut vakiomuotoiset tulo- / lähtövirran luokat ohjelmointikielellä C ++.

Esimerkkejä

Nyt kun ymmärrät virtojen perusteet, keskustelemme seuraavista esimerkeistä, joiden avulla voit ymmärtää tiedostotoimintoja paremmin C ++: ssa:

Esimerkki 1: Avaa ja sulje tiedosto

Tässä esimerkkiohjelmassa osoitamme, kuinka tiedosto avataan / luodaan ja miten tiedosto suljetaan C: ssä++. Kuten alla olevasta ohjelmasta näet, olemme sisällyttäneet tiedostotoiminnoille tarvittavan kirjaston.

Tiedoston avaamiseen ja sulkemiseen tarvitaan etuosan objekti. Sitten meidän on avattava tiedosto, jotta voimme lukea tai kirjoittaa tiedostoon. Olemme sisällyttäneet fstream-otsikkotiedoston riville numero 1, jotta voimme käyttää stream-luokkaa.

Olemme julistaneet myFile_Handlerin päätoiminnon sisäpuolelle. Sitten voimme käyttää open () -toimintoa tyhjän tiedoston luomiseen ja close () -toimintoon tiedoston sulkemiseksi.

#sisältää
käyttämällä nimitilaa vakio;
int main ()

ylävirran myFile_Handler;
// Tiedosto auki
myFile_Handler.avaa ("File_1.txt ");
// Tiedosto sulje
myFile_Handler.kiinni();
paluu 0;

Nyt kootaan ohjelma ja tutkitaan tulos. Kuten alla olevasta tulostusikkunasta näet, "File_1.txt ”-tiedosto luotiin ohjelman suorittamisen jälkeen. Tiedoston koko on nolla, koska emme ole kirjoittaneet tiedostoon mitään sisältöä.

Esimerkki 2: Kirjoita tiedostoon

Edellisessä esimerkkiohjelmassa näytimme, kuinka tiedosto avataan ja miten se suljetaan. Nyt näytämme, kuinka kirjoittaa jotain tiedostoon.

Voimme kirjoittaa tiedostoon käyttämällä suoratoiston lisäysoperaattoria, ts.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.

#sisältää
käyttämällä nimitilaa vakio;
int main ()

ylävirran myFile_Handler;
// Tiedosto auki
myFile_Handler.avaa ("File_1.txt ");
// Kirjoita tiedostoon
myFile_Handler << "This is a sample test File. " << endl;
myFile_Handler << "This is the second line of the file. " << endl;
// Tiedosto suljetaan
myFile_Handler.kiinni();
paluu 0;

Nyt kootaan yllä oleva ohjelma ja suoritetaan se. Kuten alla voit nähdä, olemme onnistuneesti kirjoittaneet tiedostoon File_1.txt.

Esimerkki 3: Lue tiedostosta

Aikaisemmissa esimerkeissä osoitimme, kuinka sisältö kirjoitetaan tiedostoon. Luetaan nyt esimerkissä 2 luomamme tiedoston sisältö ja näytetään sisältö vakiolähtölaitteella, ts.e., näyttö.

Käytämme getline () -toimintoa lukemaan koko rivi tiedostosta ja sitten "cout" tulostaaksesi rivin monitorille.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
int main ()

ifstream myFile_Handler;
merkkijono myLine;
// Tiedosto avataan lukutilassa
myFile_Handler.avaa ("File_1.txt ");
jos (myFile_Handler.is_open ())

// Jatka tiedoston lukemista
while (getline (myFile_Handler, myLine))

// tulosta rivi vakiotulosteeseen
cout << myLine << endl;

// Tiedosto suljetaan
myFile_Handler.kiinni();

muu

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

paluu 0;

Tulostamme nyt File_1: n sisällön.txt käyttämällä seuraavaa komentoa: cat File_1.txt. Kun olemme koonneet ja suorittaneet ohjelman, on selvää, että tulos vastaa tiedoston sisältöä. Siksi olemme lukeneet tiedoston onnistuneesti ja tulostaneet tiedoston sisällön näyttöön.

Esimerkki 4: Lue ja kirjoita tiedostoon

Toistaiseksi olemme osoittaneet, kuinka tiedosto avataan, luetaan, kirjoitetaan ja suljetaan. C ++: ssa voimme myös lukea ja kirjoittaa tiedostoon samanaikaisesti. Jos haluat lukea ja kirjoittaa tiedostoon, meidän on hankittava fstream-objekti ja avattava tiedosto "ios :: in" - ja "ios :: out" -tiloissa.

Tässä esimerkissä kirjoitamme ensin sisältöä tiedostoon. Sitten luemme tiedot tiedostosta ja tulostamme ne monitorille.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
int main ()

fstream myFile_Handler;
merkkijono myLine;
// Tiedosto auki
myFile_Handler.avaa ("File_1.txt ", ios :: sisään | ios :: ulos);
// Tarkista, onko tiedosto avattu
jos(!myFile_Handler)

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

// Kirjoita tiedostoon
myFile_Handler << "1. This is another sample test File. " << endl;
myFile_Handler << "2. This is the second line of the file. " << endl;
myFile_Handler.seekg (ios :: kerjätä);
// Lue tiedosto
jos (myFile_Handler.is_open ())

// Jatka tiedoston lukemista
while (getline (myFile_Handler, myLine))

// tulosta rivi vakiotulosteeseen
cout << myLine << endl;

// Tiedosto sulje
myFile_Handler.kiinni();

muu

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

myFile_Handler.kiinni();
paluu 0;

Nyt kootaan ja suoritetaan ohjelma.

Esimerkki 5: Lue ja kirjoita binaaritiedostoon

Tässä esimerkissä aiomme julistaa luokan ja kirjoittaa objektin sitten binääritiedostoon. Tämän esimerkin yksinkertaistamiseksi olemme julistaneet Employee-luokan julkisella muuttujalla emp_id. Sitten luemme binaaritiedoston ja tulostamme sen näytölle.

#sisältää
#sisältää
käyttämällä nimitilaa vakio;
luokan työntekijä

julkinen:
int emp_id;
;
int main ()

ofstream binOutFile_Handler;
ifstream binInFile_Handler;
Työntekijä empObj_W, empObj_R;
// Tiedosto auki
binOutFile_Handler.avoin ("Työntekijä.dat ", ios :: out | ios :: binääri);
// Tarkista, onko tiedosto avattu
jos(!binOutFile_Handler)

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

// Alusta empObj_W
empObj_W.emp_id = 1512;
// Kirjoita tiedostoon
binOutFile_Handler.kirjoita ((char *) & empObj_W, sizeof (työntekijä));
binOutFile_Handler.kiinni();
jos(!binOutFile_Handler.hyvä())

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

// Luketaan nyt työntekijä.dat-tiedosto
binInFile_Handler.avoin ("Työntekijä.dat ", ios :: in | ios :: binaarinen);
// Tarkista, onko tiedosto avattu
jos(!binInFile_Handler)

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

// Lue binaaritiedoston sisältö
binInFile_Handler.lue ((char *) & empObj_R, sizeof (työntekijä));
binInFile_Handler.kiinni();
jos(!binInFile_Handler.hyvä())

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

// Tulosta empObj_R: n tulos
cout << "Details of the Employee : " << endl;
cout << "Employee ID : " << empObj_R.emp_id << endl;
paluu 0;

Johtopäätös

Tiedostoja käytetään pääasiassa tietojen tallentamiseen, ja niillä on tärkeä rooli reaalimaailman ohjelmoinnissa. Tässä artikkelissa näytimme, kuinka voit käyttää erilaisia ​​tiedostotoimintoja C ++ - ohjelmointikielen kanssa tekemällä useita esimerkkejä. Lisäksi näytimme kuinka lukea ja kirjoittaa tietoja sekä tekstitiedostoihin että binaaritiedostoihin.

Parhaat pelikonsoliemulaattorit Linuxille
Tässä artikkelissa luetellaan suositut pelikonsolin emulointiohjelmistot, jotka ovat saatavana Linuxille. Emulointi on ohjelmistojen yhteensopivuusker...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Kuinka siepata ja suoratoistaa pelisessiosi Linuxissa
Aikaisemmin pelaamista pidettiin vain harrastuksena, mutta ajan myötä pelialalla tapahtui valtava kasvu tekniikan ja pelaajien määrän suhteen. Peliala...