C++ Tiedostojen käsittely: Tiedostojen avaaminen, kirjoittaminen, lukeminen ja sulkeminen C++
Mitä tiedostojen käsittely sisältää C++?
Tiedostot tallentavat tiedot pysyvästi tallennuslaitteeseen. Tiedostonkäsittelyllä ohjelman tulos voidaan tallentaa tiedostoon. Tiedoille voidaan suorittaa erilaisia toimintoja tiedostossa ollessaan.
Virta on abstraktio laitteesta, jossa syöttö/tulostustoimintoja suoritetaan. Voit esittää virran määränpäänä tai määrittelemättömän pituisten merkkien lähteenä. Tämä määräytyy niiden käytön mukaan. C++ tarjoaa kirjaston, joka sisältää menetelmiä tiedostojen käsittelyyn. Keskustellaan siitä.
Fstream-kirjasto
Fstream-kirjasto tarjoaa C++ ohjelmoijat, joilla on kolme luokkaa tiedostojen käsittelyyn. Näihin luokkiin kuuluvat:
- ylävirtaan– Tämä luokka edustaa lähtövirtaa. Sitä käytetään tiedostojen luomiseen ja tietojen kirjoittamiseen tiedostoihin.
- ifstream– Tämä luokka edustaa syöttövirtaa. Sitä käytetään tietojen lukemiseen datatiedostoista.
- virtaus– Tämä luokka edustaa yleensä tiedostovirtaa. Siinä on offstream/ifstream-ominaisuudet. Tämä tarkoittaa, että se pystyy luomaan tiedostoja, kirjoittamaan tiedostoihin ja lukemaan datatiedostoista.
Seuraava kuva helpottaa ymmärtämistä:

Jos haluat käyttää yllä olevia fstream-kirjaston luokkia, sinun on sisällytettävä se ohjelmaan otsikkotiedostona. Tietenkin käytät #include esikäsittelyohjetta. Sinun on myös sisällytettävä iostream-otsikkotiedosto.
Kuinka avata tiedostoja
Ennen kuin teet mitään toimintoa tiedostolle, sinun on ensin avattava se. Jos haluat kirjoittaa tiedostoon, avaa se käyttämällä fstream- tai ofstream-objekteja. Jos sinun tarvitsee vain lukea tiedostosta, avaa se ifstream-objektilla.
Kolmella objektilla, eli fstream, ofstream ja ifstream, on määritetty open()-funktio. Funktio ottaa tämän syntaksin:
open (file_name, mode);
- Parametri file_name ilmaisee avattavan tiedoston nimen.
- Mode-parametri on valinnainen. Se voi ottaa minkä tahansa seuraavista arvoista:
| Arvo | Tuotetiedot |
|---|---|
| ios:: sovellus | Liitä tila. Tiedostoon lähetetty tulos liitetään siihen. |
| ios::ate | Se avaa tiedoston tulostetta varten ja siirtää sitten luku- ja kirjoitussäätimen tiedoston loppuun. |
| ios::in | Se avaa tiedoston lukemista varten. |
| ios::out | Se avaa tiedoston kirjoitusta varten. |
| ios::trunc | Jos tiedosto on olemassa, tiedoston elementit tulee katkaista ennen sen avaamista. |
On mahdollista käyttää kahta tilaa samanaikaisesti. Yhdistät ne käyttämällä | (OR) operaattori.
Esimerkki 1:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file", ios::out);
if (!my_file) {
cout << "File not created!";
}
else {
cout << "File created successfully!";
my_file.close();
}
return 0;
}
lähtö:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Sisällytä iostream-otsikkotiedosto ohjelmaan käyttääksesi sen toimintoja.
- Sisällytä fstream-otsikkotiedosto ohjelmaan käyttääksesi sen luokkia.
- Sisällytä std-nimiavaruus koodiimme käyttääksesi sen luokkia kutsumatta sitä.
- Kutsu main()-funktiota. Ohjelmalogiikan pitäisi mennä sen runkoon.
- Luo fstream-luokan objekti ja anna sille nimi my_file.
- Käytä open()-funktiota yllä olevaan objektiin luodaksesi uuden tiedoston. Out-tilassa voimme kirjoittaa tiedostoon.
- Käytä if-lausetta tarkistaaksesi, epäonnistuiko tiedoston luominen.
- Konsolissa tulostettava viesti, jos tiedostoa ei luotu.
- if-lauseen rungon loppu.
- Käytä else-lausetta ilmoittaaksesi, mitä tehdä, jos tiedosto on luotu.
- Konsolissa tulostettava viesti, jos tiedosto on luotu.
- Sulje tiedosto käyttämällä objektiin close()-funktiota.
- Muu-lauseen rungon loppu.
- Ohjelman on palautettava arvo, jos se valmistuu onnistuneesti.
- Main()-funktion rungon loppu.
Kuinka sulkea tiedostoja
Kerran C++ ohjelma päättyy automaattisesti
- huuhtelee virtoja
- vapauttaa varatun muistin
- sulkee avatut tiedostot.
Ohjelmoijana sinun tulee kuitenkin oppia sulkemaan avoimet tiedostot ennen ohjelman päättymistä.
Fstream-, ofstream- ja ifstream-objekteissa on close()-toiminto tiedostojen sulkemiseen. Funktio ottaa tämän syntaksin:
void close();
Kuinka kirjoittaa tiedostoihin
Voit kirjoittaa tiedostoon suoraan omalta C++ ohjelmoida. Käytät tähän streamin lisäysoperaattoria (<<). Tiedostoon kirjoitettava teksti tulee laittaa lainausmerkkeihin.
Osoittakaamme tämä.
Esimerkki 2:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file.txt", ios::out);
if (!my_file) {
cout << "File not created!";
}
else {
cout << "File created successfully!";
my_file << "Guru99";
my_file.close();
}
return 0;
}
lähtö:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Sisällytä iostream-otsikkotiedosto ohjelmaan käyttääksesi sen toimintoja.
- Sisällytä fstream-otsikkotiedosto ohjelmaan käyttääksesi sen luokkia.
- Sisällytä std-nimiavaruus ohjelmaan, jotta voit käyttää sen luokkia kutsumatta sitä.
- Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
- Luo fstream-luokan esiintymä ja anna sille nimi oma_tiedosto.
- Käytä open()-funktiota luodaksesi uuden tiedoston nimeltä oma_tiedosto.txt. Tiedosto avataan ulostulotilassa siihen kirjoittamista varten.
- Käytä if-lausetta tarkistaaksesi, onko tiedostoa avattu.
- Konsolissa tulostettava teksti, jos tiedostoa ei avata.
- if-lauseen rungon loppu.
- Käytä else-lausetta ilmoittaaksesi, mitä tehdä, jos tiedosto on luotu.
- Konsolissa tulostettava teksti, jos tiedosto on luotu.
- Kirjoita tekstiä luotuun tiedostoon.
- Sulje tiedosto käyttämällä close()-funktiota.
- Muu-lauseen rungon loppu.
- Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
- Main()-funktion rungon loppu.
Kuinka lukea tiedostoista
Voit lukea tietoja tiedostoista omaan C++ ohjelmoida. Tämä on mahdollista käyttämällä virranpoistooperaattoria (>>). Käytät operaattoria samalla tavalla kuin käytät sitä lukemaan käyttäjän syötteitä näppäimistöltä. cin-objektin sijaan käytät kuitenkin ifstream/fstream-objektia.
Esimerkki 3:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file.txt", ios::in);
if (!my_file) {
cout << "No such file";
}
else {
char ch;
while (1) {
my_file >> ch;
if (my_file.eof())
break;
cout << ch;
}
}
my_file.close();
return 0;
}
lähtö:
Ei sellaista tiedostoa
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Sisällytä iostream-otsikkotiedosto ohjelmaan käyttääksesi sen toimintoja.
- Sisällytä fstream-otsikkotiedosto ohjelmaan käyttääksesi sen luokkia.
- Sisällytä std-nimiavaruus ohjelmaan, jotta voit käyttää sen luokkia kutsumatta sitä.
- Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
- Luo fstream-luokan esiintymä ja anna sille nimi oma_tiedosto.
- Käytä open()-funktiota luodaksesi uuden tiedoston nimeltä oma_tiedosto.txt. Tiedosto avataan in-tilassa lukemista varten.
- Käytä if-lausetta tarkistaaksesi, ettei tiedostoa ole olemassa.
- Konsolissa tulostettava teksti, jos tiedostoa ei löydy.
- if-lauseen rungon loppu.
- Käytä else-lausetta ilmoittaaksesi, mitä tehdä, jos tiedosto löytyy.
- Luo char muuttuja nimeltä ch.
- Luo samalla silmukka tiedoston sisällön iterointiin.
- Kirjoita/tallenna tiedoston sisältö muuttujaan ch.
- Käytä if-ehtoa ja eof()-funktiota eli tiedoston loppua varmistaaksesi, että kääntäjä jatkaa lukemista tiedostosta, jos loppua ei saavuteta.
- Käytä break-lausetta lopettaaksesi tiedoston lukemisen, kun loppu on saavutettu.
- Tulosta muuttujan ch sisältö konsoliin.
- Lopun runko.
- Muu-lauseen rungon loppu.
- Sulje tiedosto kutsumalla close()-funktiota.
- Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
- Main()-funktion rungon loppu.
Yhteenveto
- Tiedostonkäsittelyllä ohjelman tulos voidaan lähettää ja tallentaa tiedostoon.
- Tietoihin voidaan sitten soveltaa useita toimintoja tiedostossa.
- Virta on abstraktio, joka edustaa laitetta, jossa syöttö/tulostustoiminnot suoritetaan.
- Virta voidaan esittää joko määränpäänä tai määräämättömän pituisten merkkien lähteenä.
- Fstream-kirjasto tarjoaa C++ ohjelmoijat, joilla on menetelmiä tiedostojen käsittelyyn.
- Jotta voit käyttää kirjastoa, sinun on sisällytettävä se ohjelmaan #include preprocessor -direktiivin avulla.



