Dosya İşlemleri: fstream ile Dosya Okuma ve Yazma (txt, bin)

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Dosya İşlemleri: Veriyi Kalıcı Hale Getirmek​


Dosya işlemleri üç ana sınıf üzerinden yürütülür: ofstream (yazma), ifstream (okuma) ve her ikisini de yapabilen fstream.



1. Dosyaya Yazma (ofstream)​


Bir dosyaya veri yazmak, cout kullanmaya çok benzer. Tek fark, veriyi ekrana değil, oluşturduğunuz dosya nesnesine yönlendirmenizdir.

C++:
#include <fstream>
#include <iostream>

int main() {
std::ofstream dosyaYaz("notlar.txt"); // Dosyayi ac (yoksa olusturur)

if (dosyaYaz.is_open()) {
    dosyaYaz << "C++ Dosya Islemleri Rehberi\n";
    dosyaYaz << "Bu satir dosyaya kaydedildi.";
    dosyaYaz.close(); // Islemi bitirince dosyayi mutlaka kapat
}
return 0;

}



2. Dosyadan Okuma (ifstream)​


Dosyadan veri okurken satır satır mı yoksa kelime kelime mi okuyacağımıza karar vermemiz gerekir. getline() fonksiyonu, satırın tamamını okumak için en güvenli yoldur.

C++:
#include <fstream>
#include <string>

std::ifstream dosyaOku("notlar.txt");
std::string satir;

if (dosyaOku.is_open()) {
while (std::getline(dosyaOku, satir)) { // Dosya sonuna kadar oku
std::cout << satir << std::endl;
}
dosyaOku.close();
}



3. Dosya Açma Modları​


Dosyayı açarken varsayılan davranışları değiştirebilirsiniz. Örneğin, dosyanın üzerine yazmak yerine sonuna ekleme yapmak isteyebilirsiniz.

ModAçıklama
std::ios::outYazma modu (varsayılan). Dosya varsa içeriğini siler.
std::ios::appAppend (Ekleme): Veriyi dosyanın sonuna ekler.
std::ios::inOkuma modu.
std::ios::binaryDosyayı metin olarak değil, ikili (binary) formatta açar.



4. Binary (İkili) Dosya İşlemleri​


Metin dosyaları (.txt) insanlar tarafından okunabilir, ancak büyük verileri veya sınıfları/yapıları saklamak için Binary format çok daha hızlı ve az yer kaplar.

C++:
struct Oyuncu {
int id;
float puan;
};

// Binary Yazma
Oyuncu p1 = {1, 95.5};
std::ofstream outBin("data.dat", std::ios::binary);
outBin.write((char*)&p1, sizeof(Oyuncu));
outBin.close();

// Binary Okuma
Oyuncu p2;
std::ifstream inBin("data.dat", std::ios::binary);
inBin.read((char*)&p2, sizeof(Oyuncu));



Sonuç​


Dosya işlemleri yaparken en sık karşılaşılan hata, dosyanın açılamama ihtimalini (dosya yoksa veya izin yoksa) kontrol etmemektir. Her zaman is_open() kontrolü yapmak sizi beklenmedik çökmelerden kurtarır. Ayrıca, modern C++'ta dosya nesnesi kapsam dışına çıktığında (destructor çalıştığında) otomatik kapanır, ancak manuel olarak close() yapmak alışkanlık açısından iyidir.
 
Geri
Üst