C++'da Dosya Nasıl Okunur ve Yazılır

How Read Write File C



Bu yazımızda size C++ programlama dilinde bir dosyanın nasıl okunacağını ve yazılacağını birkaç örnek kullanarak göstereceğiz. Okuma ve yazma gibi C++ dosya işlemlerini anlamak için önce C++'daki akış kavramını anlamamız gerekir.

Akış nedir?

Akış, basitçe bir veri veya karakter akışıdır. İki tür akış vardır: giriş akışları ve çıkış akışları. Klavye gibi harici bir giriş cihazından veri okumak için bir giriş akışı kullanılırken, monitör gibi harici çıkış cihazına veri yazmak için bir çıkış akışı kullanılır. Bir dosya hem girdi hem de çıktı kaynağı olarak düşünülebilir.









C++'da, harici bir kaynağa veri göndermek veya almak için bir akış kullanırız.



Bir giriş/çıkış akışına, yani ios'a erişmek için yerleşik sınıfları kullanabiliriz.





İşte C++ programlama dilinin akış sınıfı hiyerarşisi:



cin ve cout nesneleri sırasıyla klavyeden veri okumak ve çıktıyı monitörde görüntülemek için kullanılır. Ek olarak, girdi dosyası akışı anlamına gelen ifstream, bir dosyadan veri akışını okumak için kullanılır ve çıkış dosyası akışı anlamına gelen ofstream, bir dosyaya bir veri akışı yazmak için kullanılır.

iostram.h dosyası, C++ programlama dilinde gerekli tüm standart giriş/çıkış akış sınıflarını içerir.

Örnekler

Artık akışların temellerini anladığınıza göre, C++'da dosya işlemlerini daha iyi anlamanıza yardımcı olmak için aşağıdaki örnekleri tartışacağız:

  • Örnek 1: Bir Dosyayı Açın ve Kapatın
  • Örnek 2: Bir Dosyaya Yazma
  • Örnek 3: Bir Dosyadan Okuma
  • Örnek 4: Bir Dosyaya Okuma ve Yazma
  • Örnek 5: Bir İkili Dosyaya Okuma ve Yazma

Örnek 1: Bir Dosyayı Açın ve Kapatın

Bu örnek programda, bir dosyanın nasıl açılacağını/oluşturulacağını ve dosyanın C++'da nasıl kapatılacağını göstereceğiz. Aşağıdaki programda da göreceğiniz gibi dosya işlemleri için gerekli olan kütüphaneyi ekledik.

Bir dosyayı açıp kapatmak için bir ofstream nesnesine ihtiyacımız var. Daha sonra bir dosyayı okumak veya yazmak için dosyayı açmalıyız. fstream başlık dosyasını ofstream sınıfına erişebilmemiz için satır numarası-1'e ekledik.

Ana işlevin içinde bir akış nesnesi olarak bir myFile_Handler tanımladık. Daha sonra boş bir dosya oluşturmak için open() işlevini ve dosyayı kapatmak için close() işlevini kullanabiliriz.

#Dahil etmek

kullanarak ad alanısaat;

intana()
{
yayın myFile_Handler;

// Dosya Aç
myFile_Handler.açık('File_1.txt');

// Dosya Kapat
myFile_Handler.kapat();
dönüş 0;
}

Şimdi programı derleyeceğiz ve çıktısını inceleyeceğiz. Aşağıdaki çıktı penceresinde de göreceğiniz üzere program çalıştırıldıktan sonra File_1.txt dosyası oluşturulmuştur. Dosyaya herhangi bir içerik yazmadığımız için dosyanın boyutu sıfırdır.

Örnek 2: Bir Dosyaya Yazma

Bir önceki örnek programda size bir dosyanın nasıl açılacağını ve dosyanın nasıl kapatılacağını göstermiştik. Şimdi size bir dosyaya nasıl bir şey yazılacağını göstereceğiz.

Akış ekleme operatörünü kullanarak bir dosyaya yazabiliriz, yani<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#Dahil etmek

kullanarak ad alanısaat;

intana()
{
yayın myFile_Handler;
// Dosya Aç
myFile_Handler.açık('File_1.txt');

// Dosyaya yaz
myFile_Handler<< 'Bu bir örnek test Dosyasıdır. ' <<son;
myFile_Handler<< 'Bu dosyanın ikinci satırı. ' <<son;

// Dosya Kapat
myFile_Handler.kapat();
dönüş 0;
}

Şimdi yukarıdaki programı derleyip çalıştıracağız. Aşağıda gördüğünüz gibi File_1.txt dosyasına başarıyla yazdık.

Örnek 3: Bir Dosyadan Okuma

Önceki örneklerde, bir dosyaya nasıl içerik yazılacağını gösterdik. Şimdi Örnek-2'de oluşturduğumuz dosyadan içeriği okuyalım ve içeriği standart çıktı aygıtı yani monitör üzerinde görüntüleyelim.

Dosyadan tüm satırı okumak için getline() işlevini kullanırız ve ardından satırı monitörde yazdırmak için cout yaparız.

#Dahil etmek
#Dahil etmek
#Dahil etmek

kullanarak ad alanısaat;

intana()
{
ifstream myFile_Handler;
dize myLine;

// Dosya Okuma Modunda Aç
myFile_Handler.açık('File_1.txt');

Eğer(myFile_Handler.açık())
{
// Dosyayı okumaya devam et
süre(hat almak(myFile_Handler, myLine))
{
// satırı standart çıktıya yazdır
maliyet <<benim hattım<<son;
}
// Dosya Kapat
myFile_Handler.kapat();
}
Başka
{
maliyet << 'Dosya açılamıyor!';
}
dönüş 0;
}

Şimdi, aşağıdaki komutu kullanarak File_1.txt içeriğini yazdıracağız: cat File_1.txt. Programı derleyip çalıştırdığımızda, çıktının dosyanın içeriğiyle eşleştiği açıktır. Bu nedenle dosyayı başarıyla okuduk ve dosyanın içeriğini monitöre yazdırdık.

Örnek 4: Bir Dosyaya Okuma ve Yazma

Şimdiye kadar size bir dosyayı nasıl açacağınızı, okuyacağınızı, yazacağınızı ve kapatacağınızı gösterdik. C++'da aynı anda bir dosyayı okuyup yazabiliriz. Bir dosyayı hem okumak hem de yazmak için bir fstream nesnesi almalı ve dosyayı ios::in ve ios::out modunda açmalıyız.

Bu örnekte, önce dosyaya bir miktar içerik yazıyoruz. Ardından dosyadaki verileri okuyup monitöre yazdırıyoruz.

#Dahil etmek
#Dahil etmek
#Dahil etmek

kullanarak ad alanısaat;

intana()
{
fstream myFile_Handler;
dize myLine;

// Dosya Aç
myFile_Handler.açık('File_1.txt', ios::içinde |ios::dışarı);

// Dosyanın açılıp açılmadığını kontrol edin
Eğer(!myFile_Handler)
{
maliyet << 'Dosya açılmadı!';
çıkış(1);
}

// Dosyaya yaz
myFile_Handler<< '1. Bu başka bir örnek test Dosyasıdır. ' <<son;
myFile_Handler<< '2. Bu dosyanın ikinci satırıdır. ' <<son;

myFile_Handler.aramak(ios::dilenmek);

// Dosyayı Oku
Eğer(myFile_Handler.açık())
{
// Dosyayı okumaya devam et
süre(hat almak(myFile_Handler, myLine))
{
// satırı standart çıktıya yazdır
maliyet <<benim hattım<<son;
}

// Dosya Kapat
myFile_Handler.kapat();
}
Başka
{
maliyet << 'Dosya açılamıyor!';
}
myFile_Handler.kapat();
dönüş 0;
}

Şimdi programı derleyip çalıştıracağız.

Örnek 5: Bir İkili Dosyaya Okuma ve Yazma

Bu örnekte, bir sınıf bildireceğiz ve ardından nesneyi bir ikili dosyaya yazacağız. Bu örneği basitleştirmek için, Employee sınıfını bir genel değişken emp_id ile bildirdik. Ardından, ikili dosyayı okuyacağız ve çıktıyı monitöre yazdıracağız.

#Dahil etmek
#Dahil etmek

kullanarak ad alanısaat;

sınıfÇalışan
{
halka açık:
intemp_id;
};

intana()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

Çalışan empObj_W, empObj_R;

// Dosya Aç
binOutFile_Handler.açık('çalışan.dat', ios::dışarı |ios::ikili);

// Dosyanın açılıp açılmadığını kontrol edin
Eğer(!binOutFile_Handler)
{
maliyet << 'Dosya açılmadı!';
çıkış(1);
}

// empObj_W'yi başlat
empObj_W.emp_id = 1512;

// Dosyaya yaz
binOutFile_Handler.yazı yazmak((karakter *) &emObj_W,boyutu(Çalışan));
binOutFile_Handler.kapat();

Eğer(!binOutFile_Handler.iyi())
{
maliyet << 'İkili dosya yazılırken hata oluştu!' <<son;
çıkış(2);
}

// Şimdi çalışan.dat dosyasını okuyalım
binInFile_Handler.açık('çalışan.dat', ios::içinde |ios::ikili);
// Dosyanın açılıp açılmadığını kontrol edin
Eğer(!binInFile_Handler)
{
maliyet << 'Dosya açılmadı!';
çıkış(3);
}

// ikili dosyanın içeriğini oku
binInFile_Handler.okuman((karakter *) &emObj_R,boyutu(Çalışan));
binInFile_Handler.kapat();

Eğer(!binInFile_Handler.iyi())
{
maliyet << 'İkili dosya okunurken hata oluştu!' <<son;
çıkış(4);
}

// empObj_R çıktısını yazdır
maliyet << 'Çalışan Detayları:' <<son;
maliyet << 'Çalışan kimliği : ' <<empObj_R.emp_id <<son;

dönüş 0;
}

Çözüm

Dosyalar esas olarak verileri depolamak için kullanılır ve gerçek dünya programlamasında önemli bir rol oynarlar. Bu yazımızda size C++ programlama dili ile çeşitli dosya işlemlerinin nasıl kullanılacağını birkaç örnek üzerinden çalışarak gösterdik. Ayrıca, hem metin dosyalarına hem de ikili dosyalara nasıl veri okunacağını ve yazılacağını gösterdik.