C++ Failide käsitsemine: kuidas faile avada, kirjutada, lugeda, sulgeda C++
Mis on failihaldus C++?
Failid salvestavad andmeid püsivalt salvestusseadmesse. Failikäsitluse abil saab programmi väljundit faili salvestada. Failis olles saab andmetega teha erinevaid toiminguid.
Voog on seadme abstraktsioon, kus sooritatakse sisend/väljundoperatsioone. Saate kujutada voogu sihtkohana või määramata pikkusega tähemärkide allikana. Selle määrab nende kasutamine. C++ pakub teile teeki, mis sisaldab failide käsitlemise meetodeid. Arutame seda.
Fstreami raamatukogu
Fstream raamatukogu pakub C++ programmeerijad kolme klassiga failidega töötamiseks. Need klassid hõlmavad järgmist:
- väljaspool voolu– See klass esindab väljundvoogu. Seda kasutatakse failide loomiseks ja failidesse teabe kirjutamiseks.
- ifstream– See klass esindab sisendvoogu. Seda kasutatakse andmefailidest teabe lugemiseks.
- voolu– See klass esindab üldiselt failivoogu. See on varustatud voovaba/ifstreami võimalustega. See tähendab, et see on võimeline faile looma, failidesse kirjutama ja andmefailidest lugema.
Järgmine pilt muudab selle mõistmise lihtsaks:
Fstream teegi ülaltoodud klasside kasutamiseks peate selle oma programmi päisefailina lisama. Loomulikult kasutate #include eelprotsessori direktiivi. Peate lisama ka iostreami päisefaili.
Kuidas faile avada
Enne failiga mis tahes toimingu tegemist peate selle esmalt avama. Kui teil on vaja faili kirjutada, avage see fstream või ofstream objektide abil. Kui teil on vaja ainult failist lugeda, avage see objekti ifstream abil.
Kolmel objektil, st fstream, ofstream ja ifstream, on funktsioon open() määratletud. Funktsioon võtab järgmise süntaksi:
open (file_name, mode);
- Parameeter file_name tähistab avatava faili nime.
- Režiimi parameeter on valikuline. See võib võtta mis tahes järgmistest väärtustest:
Väärtus | Kirjeldus |
---|---|
ios:: rakendus | Lisamise režiim. Failile saadetud väljund lisatakse sellele. |
ios::ate | See avab väljundi jaoks faili ja liigutab lugemise ja kirjutamise juhtelemendi faili lõppu. |
ios::in | See avab faili lugemiseks. |
ios::out | See avab faili kirjutamiseks. |
ios::trunc | Kui fail on olemas, tuleks failielemendid enne selle avamist kärpida. |
Võimalik on kasutada kahte režiimi korraga. Kombineerite need kasutades | (VÕI) operaator.
Näide 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; }
Väljund:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Selle funktsioonide kasutamiseks lisage programmi iostreami päisefail.
- Klasside kasutamiseks lisage programmi fstream päisefail.
- Lisage meie koodi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
- Kutsuge funktsioon main(). Programmi loogika peaks minema selle kehasse.
- Looge fstream klassi objekt ja andke sellele nimi minu_fail.
- Uue faili loomiseks kasutage ülaltoodud objektil funktsiooni open(). Väljundrežiim võimaldab meil faili kirjutada.
- Kasutage if-lauset, et kontrollida, kas faili loomine ebaõnnestus.
- Teade, mis tuleb konsoolil printida, kui faili ei loodud.
- Kui-lause põhiosa lõpp.
- Kasutage käsku else, et määrata, mida teha, kui fail on loodud.
- Teade, mis tuleb konsoolil printida, kui fail on loodud.
- Faili sulgemiseks rakendage objektile funktsiooni close().
- Muu lause põhiosa lõpp.
- Programm peab tagastama väärtuse, kui see on edukalt lõpule viidud.
- Funktsiooni main() keha lõpp.
Kuidas faile sulgeda
Ükskord C++ programm lõpeb, see automaatselt
- loputab ojasid
- vabastab eraldatud mälu
- sulgeb avatud failid.
Programmeerijana peaksite siiski õppima avatud faile sulgema enne programmi lõpetamist.
Objektidel fstream, ofstream ja ifstream on failide sulgemiseks funktsioon close(). Funktsioon võtab järgmise süntaksi:
void close();
Kuidas failidesse kirjutada
Saate faili kirjutada otse oma C++ programm. Kasutate selleks voo sisestamise operaatorit (<<). Faili kirjutatav tekst peaks olema jutumärkides.
Näitame seda.
Näide 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; }
Väljund:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Selle funktsioonide kasutamiseks lisage programmi iostreami päisefail.
- Klasside kasutamiseks lisage programmi fstream päisefail.
- Lisage programmi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
- Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle funktsiooni kehasse.
- Looge klassi fstream eksemplar ja andke sellele nimi minu_fail.
- Kasutage funktsiooni open(), et luua uus fail nimega minu_fail.txt. Fail avatakse sellesse kirjutamiseks väljundrežiimis.
- Kasutage if-lauset, et kontrollida, kas faili pole avatud.
- Kui faili ei avata, konsoolil prinditav tekst.
- Kui-lause põhiosa lõpp.
- Kasutage käsku else, et määrata, mida teha, kui fail on loodud.
- Tekst, mis prinditakse konsoolil, kui fail on loodud.
- Kirjutage loodud faili teksti.
- Faili sulgemiseks kasutage funktsiooni close().
- Muu lause põhiosa lõpp.
- Programm peab pärast edukat lõpetamist tagastama väärtuse.
- Funktsiooni main() keha lõpp.
Kuidas failidest lugeda
Saate lugeda teavet failidest oma C++ programm. See on võimalik voo eraldamise operaatori (>>) abil. Operaatorit kasutate samal viisil, kui kasutate seda klaviatuurilt kasutaja sisendi lugemiseks. Objekti cin asemel kasutate aga objekti ifstream/ fstream.
Näide 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; }
Väljund:
Sellist faili pole
Siin on koodi ekraanipilt:
Koodi selgitus:
- Selle funktsioonide kasutamiseks lisage programmi iostreami päisefail.
- Klasside kasutamiseks lisage programmi fstream päisefail.
- Lisage programmi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
- Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle funktsiooni kehasse.
- Looge klassi fstream eksemplar ja andke sellele nimi minu_fail.
- Kasutage funktsiooni open(), et luua uus fail nimega minu_fail.txt. Fail avatakse sellest lugemiseks sisselülitatud režiimis.
- Kasutage if-lauset, et kontrollida, kas faili pole olemas.
- Kui faili ei leita, konsoolil prinditav tekst.
- Kui-lause põhiosa lõpp.
- Kasutage käsku else, et määrata, mida teha, kui fail leitakse.
- Loo char muutuja nimega ch.
- Loo samas silmus faili sisu kordamiseks.
- Kirjutage/salvestage faili sisu muutujas ch.
- Kasutage if condition ja eof() funktsiooni, st faili lõppu, tagamaks, et kompilaator jätkab faili lugemist, kui lõppu ei jõuta.
- Kasutage katkestuslauset, et lõpetada failist lugemine pärast lõppu.
- Printige konsoolile muutuja ch sisu.
- Aja lõpus keha.
- Muu lause põhiosa lõpp.
- Faili sulgemiseks helistage funktsioonile close().
- Programm peab pärast edukat lõpetamist tagastama väärtuse.
- Funktsiooni main() keha lõpp.
kokkuvõte
- Failitöötlusega saab programmi väljundit saata ja faili salvestada.
- Seejärel saab failis olevatele andmetele rakendada mitmeid toiminguid.
- Voog on abstraktsioon, mis esindab seadet, kus sooritatakse sisend/väljundoperatsioone.
- Voogu saab esitada määramata pikkusega märkide sihtkoha või allikana.
- Fstream raamatukogu pakub C++ programmeerijad failitöötlusmeetoditega.
- Teegi kasutamiseks peate selle oma programmi kaasama, kasutades käskkirja #include eelprotsessor.