C++ Programlama Dili ile Dosya Açma Yöntemleri

fstream Sınıfı Hakkında

C++ programlama dili ile dosyalar üzerinde işlem yapabilmemiz için aşağıdaki sınıfları kullanabiliriz.

  • ofstream: Dosyalara yazma işlemi için kullanılacak stream sınıfı.
  • ifstream: Dosyalardan okuma yapabilmemiz için kullanılacak stream sınıfı.
  • fstream: Dosyalar üzerinde hem yazma hemde okuma işlemleri için kullanılacak stream sınıfı.

Yukarıda tanımını yaptığımız sınıflar aslında istream ve ostream sınıflarını doğrudan veya dolaylı olarak kullanarak çalışmaktadır. Zaten kullanım olarak da birbirlerine benzemektedir.

C++ programlama dilinde en çok kullandığımız #include komutu istream ve ostream sınıflarını içermektedir. Sonuç olarak cin komutu istream sınıfının bir nesnesidir ve cout komutu da ostream sınıfının bir nesnesidir. Konuyu fazla dağıtmadan fstream sınıfını kullanarak dosya açma yöntemlerine değinelim.
Buradaki yazımızda bir dosya açmış ve dosyaya bir metin eklemiştik. Şimdi ise farklı modlar kullanarak nasıl dosya açılır onu inceleyelim.

C++ ile Dosya İşlemlerinde Kullanılan Etiketler

  • ios::in (Dosyayı giriş (okuma) işlemleri için açmaya yarar.)
  • ios::out (Dosyayı çıkış (yazma) işlemleri için açmaya yarar. )
  • ios::binary (Dosyayı binary olarak açar.)
  • ios::ate (Dosyaya yazma işlemi yapılırken pozisyonu dosyanın sonuna ayarlar. Yani dosya yazma işlemine en son konumdan başlar. Eğer bu etiket etkin değilse dosyaya yazma işlemi ilk satırdan başlayacaktır.)
  • ios::app (Bütün yazma işlemlerine direk olarak dosya sonundan başlar. Eğer dosyaya daha önceden yazma işlemi yapılmışsa onları silmeden üzerine ekler. Bu mod aktifken dosya açmaya çalıştığımızda dosya konumunda açmak istediğimiz dosya olmasa bile o isimde yeni bir dosya oluşturulacaktır.)
  • ios::trunc (Dosya yazma işlemleri için açılmışsa ve zaten dosya açmak istediğimiz konumda var ise dosyayı siler ve yenisi ile değiştirir.)

Not: Eğer birden fazla etiket ile çalışmak istersek bitwise operatörü olan OR işareti | ile etiketleri birleştirip aynı anda birden fazla etiket kullanabiliriz. Burada anlatılan etiketleri tek tek deneyerek sonuçlarını gözlemleyebilirsiniz.

Varsayılan fstream etiketleri

  • ofstream (ios::out)
  • ifstream (ios::in)
  • fstream (ios::in | ios::out)
    fstream ile illgili etiketleri incelediğimize göre bir örnek üzerinde komutları test edelim.