fstream library
Főnév
fstream library (tsz. fstream libraries)
- (informatika) A
fstreama C++ szabványos könyvtára, amely fájlok kezelésére szolgál. Azfstreamsegítségével fájlokat hozhatunk létre, megnyithatunk, olvashatunk és írhatunk. A könyvtár aziostreambővítményeként működik, így az adatfolyam-alapú (stream) olvasás és írás koncepcióját használja.
1. fstream osztályok
Az fstream három osztályt tartalmaz:
ifstream(input file stream) – fájl beolvasására szolgál (csak olvasás).ofstream(output file stream) – fájl írására szolgál (csak írás).fstream(file stream) – fájl egyidejű olvasására és írására szolgál.
Használatához az #include <fstream> fejléckönyvtárat kell beilleszteni a programba.
2. Fájlba írás (ofstream)
A ofstream osztályt használjuk, ha adatokat akarunk írni egy fájlba.
Példa: Egyszerű fájlírás
#include <iostream>
#include <fstream>
int main() {
std::ofstream file("adatok.txt"); // Fájl megnyitása írásra
if (file.is_open()) {
file << "Ez egy fájlba írt szöveg.\n";
file << "Ez egy újabb sor.\n";
file.close(); // Fájl bezárása
std::cout << "Az adatok sikeresen kiíródtak a fájlba.\n";
} else {
std::cerr << "Nem sikerült megnyitni a fájlt!\n";
}
return 0;
}
🔹 Ha a fájl nem létezik, a program automatikusan létrehozza.
🔹 A file.close() fontos, mert lezárja a fájlt és menti az adatokat.
3. Fájl olvasása (ifstream)
A ifstream osztályt használjuk, ha egy fájlból akarunk adatokat beolvasni.
Példa: Egyszerű fájlolvasás
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream file("adatok.txt"); // Fájl megnyitása olvasásra
if (file.is_open()) {
std::string sor;
while (std::getline(file, sor)) { // Soronként olvasás
std::cout << sor << std::endl;
}
file.close(); // Fájl bezárása
} else {
std::cerr << "Nem sikerült megnyitni a fájlt!\n";
}
return 0;
}
🔹 A std::getline(file, sor) segítségével soronként olvassuk be az adatokat.
🔹 Ha a fájl nem létezik, a program hibát jelez.
4. Fájl olvasása és írása egyszerre (fstream)
Ha egy fájlt egyszerre szeretnénk olvasni és írni, akkor az fstream osztályt használjuk.
Példa: Fájl olvasása és új sor hozzáadása
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::fstream file("adatok.txt", std::ios::in | std::ios::out | std::ios::app); // Megnyitás olvasásra és írásra
if (file.is_open()) {
std::string sor;
std::cout << "A fájl tartalma:\n";
while (std::getline(file, sor)) {
std::cout << sor << std::endl;
}
file.clear(); // Töröljük az EOF flag-et
file.seekp(0, std::ios::end); // Mutató mozgatása a fájl végére
file << "Új sor a fájl végére.\n";
file.close();
std::cout << "Új adat hozzáadva a fájlhoz.\n";
} else {
std::cerr << "Nem sikerült megnyitni a fájlt!\n";
}
return 0;
}
🔹 std::ios::in – Olvasás engedélyezése.
🔹 std::ios::out – Írás engedélyezése.
🔹 std::ios::app – Hozzáfűzés a fájl végéhez.
🔹 seekp(0, std::ios::end) – A fájl végére állítja az írási mutatót.
5. Bináris fájlok kezelése
A bináris fájlokat ios::binary módban kell megnyitni. A write() és read() függvényekkel dolgozunk.
Példa: Bináris fájl írása és olvasása
#include <iostream>
#include <fstream>
struct Adat {
int id;
char nev[50];
};
int main() {
// Bináris fájlba írás
std::ofstream fout("adatok.bin", std::ios::binary);
Adat a = {1, "Példa"};
fout.write(reinterpret_cast<char*>(&a), sizeof(a));
fout.close();
// Bináris fájl olvasása
std::ifstream fin("adatok.bin", std::ios::binary);
Adat beolvasott;
fin.read(reinterpret_cast<char*>(&beolvasott), sizeof(beolvasott));
fin.close();
std::cout << "ID: " << beolvasott.id << ", Név: " << beolvasott.nev << std::endl;
return 0;
}
🔹 A reinterpret_cast<char*> segít az adatszerkezet bájtonkénti írásában és olvasásában.
🔹 Bináris fájlok gyorsabbak és hatékonyabbak, de nehezen olvashatók emberi szemmel.
6. Speciális fájlmódok (std::ios módok)
A fájlok megnyitásakor különböző módokat használhatunk:
| Mód | Leírás |
|---|---|
std::ios::in |
Olvasásra nyitja meg a fájlt |
std::ios::out |
Írásra nyitja meg (törli a régi tartalmat) |
std::ios::app |
Hozzáfűzi az új adatokat a végéhez |
std::ios::ate |
Az írási mutatót a fájl végére állítja |
std::ios::trunc |
Ha a fájl létezik, törli a tartalmát |
std::ios::binary |
Bináris módban nyitja meg |
Több mód kombinálása
Ha több módot akarunk kombinálni, | operátorral tehetjük meg:
std::fstream file("adatok.txt", std::ios::in | std::ios::out | std::ios::app);
Összegzés
Az fstream könyvtár segítségével:
✅ Fájlba írhatunk (ofstream)
✅ Fájlból olvashatunk (ifstream)
✅ Olvashatunk és írhatunk egyszerre (fstream)
✅ Bináris fájlokat is kezelhetünk
✅ Többféle megnyitási módot használhatunk
A fájlkezelés az egyik legfontosabb programozási feladat, és az fstream könyvtár hatékony eszköz erre C++-ban. 🚀
- fstream library - Szótár.net (en-hu)
- fstream library - Sztaki (en-hu)
- fstream library - Merriam–Webster
- fstream library - Cambridge
- fstream library - WordNet
- fstream library - Яндекс (en-ru)
- fstream library - Google (en-hu)
- fstream library - Wikidata
- fstream library - Wikipédia (angol)