C++ ile Dosyaya Yazma ve Okuma İşlemleri

Batuhan Düzgün tarafından yayınlanmıştır 4. May 2012 02:04

Merhaba arkadaşlar bu yazıda sizlere C++  (Standart C++ (.NET C++ değildir) ) ile  dosya işlemlerinden bahsedeceğim. Yapılacak olan uygulama DOS ekranında çalışacaktır. Görsel bileşenler içeren bir uygulama değildir. 
 
Dev C++ derleyicisinde yeni bir C++ projesi açılır. Ardından Dosya işlemlerini yapacak olan sınıfı aşağıdaki tasarlamak gerekir. Bu sınıf yapısında dosyaya yazma ve okuma , kullanıcıdan bilgileri almak gibi işlevler yer alacaktır. Ayrıca Ekran için bir sınıf yapısı tasarlanacaktır. Bu sınıfta "menu" işlevi yer alacaktır. Böylece kullanıcı ekrandan gerekli işlem tipini seçip istediği işlemi yapabilecektir.
 
"DosyaIslemleri" sınıfı yapısı aşağıdaki gibidir. 
 
// Dosya işlemleri için hazırlanmış olan sınıf yapısıdır.
class DosyaIslemleri 
{
      private :
              // Adi, Soyadi, Meslek bilgilerini tutacak olan değişkenler
              string adi;
              string soyadi;
              string meslek;
              // Dosyaya yazma işlemini sağlayan metod.
              void writeToFile()
              {
                  // ofstream tipinde bir nesne ile "ornek.txt" isimli bir dosya yaratılır.
                  // ios::app parametresiyle dosyaya yazma işleminin eklemeli olması sağlanır.
                  ofstream  writer("ornek.txt", ios::app);
                  //  "<<" operatoru IO kütüphanesini yazanlar tarafından aşırı yüklenmiştir. 
                  // Böylece  "<<" operatörü yazma işlemini sağlamaktadır.
                  writer << adi << endl;
                  writer << soyadi << endl;
                  writer << meslek << endl;
                  // Dosya kullanıldıktan sonra kapatılır.
                  writer.close();
              }
              // Dosyadan okuma işlemini sağlayan metod.
              void readFile()
              {
                   string line;
                   // "ornek.txt" isimli dosya okunmak üzere açılır.
                   ifstream reader("ornek.txt");
                   // Dosyayının açılıp açılmadığı kontrol edilir.
                   if(reader.is_open())
                   {
                      
                      int sayac = 0;
                      // Döngü ile dosya içindeki kayıtlar okunur.
                      while(reader.good())
                      {
                          // "getline" metodu ile birlikte dosyadan bir satır okunur.
                          getline(reader, line);
                          cout << line << endl;
                          sayac++;
                          // Eğer 3 satır okunmuşsa bir kayıt bitirilmiş demektir.
                          // Her 3 satırda bir kayıt okunur.
                          if(sayac == 3)
                          {
                             sayac = 0;
                             cout << "----------------------------" << endl;
                          }
                      }
                   }
              }
      public :
             void saveUserInfo()
             {
                  cout << "Kullanici adi nedir?" << endl;
                  cin >> adi;
                  cout << "Kullanici soyadi nedir?" << endl;
                  cin >> soyadi;
                  cout << "Kullanici meslek nedir?" << endl;
                  cin >> meslek;
                  writeToFile();
             }
             void getListOfUsers()
             {
                  readFile();
             }
              
}; 
 
"Ekran" sınıfı yapısı aşağıdaki gibidir.
 
// DOS ekrana menüyü hazırlayan sınıf yapısıdır.
class Ekran 
{
      private :
              int tercih;
              // Ekran sınıfı Dosya işlemlerinide kapsadığı için bir nesne yaratılır.
              DosyaIslemleri dosyaIO;
      public :
             Ekran()
             {
                tercih = 0;
             }
             // Ekrana menü yansıtılır.
             void menu()
             {
                  while(tercih != 3)
                  {
                    cout << " 1 Kayit eklemek " << endl;
                    cout << " 2 Kayit listelemek " << endl;
                    cout << " 3 Cikis " << endl;
                    cin >> tercih;
                    if(tercih == 1)
                    {
                        dosyaIO.saveUserInfo();
                    } 
                    else if(tercih == 2)
                    {
                        dosyaIO.getListOfUsers();
                    }
                    else if(tercih == 3)
                    {
                         break;
                    }
                  }
             }
}; 
 
Son olarak programın asıl çalışacağı adres olan "main" metodu aşağıdaki gibi hazırlanır. 
 
int main(int argc, char *argv[])
{
    // Ekran tipinde bir nesne yaratılır ve program çalışmaya başlar.
    Ekran ekran;
    ekran.menu();
    system("PAUSE");
    return EXIT_SUCCESS;
} 
 
Programı çalıştırıp bir kaç kayıt ekleyelim. Aşağıdaki gibi program açılır.
 
 
 
Ardından "ornek.txt" dosyası açılır ve içinde kayıt olup olmadığı kontrol edilir. Aşağıda dosya içeriği verilmiştir.
 

 
Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
Bilgisayar Mühendisi
Endüstri Mühendisi 

Currently rated 3.8 by 4 people

  • Currently 3.75/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Qt ve C++

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  November 2018  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Yazıları geniş takvimde göster