file input output operations c
C ++ 'da Dosya Giriş Çıkış İşlemleri ve Dosya İşaretçisi İşlevleri Üzerine Bir Çalışma.
Gerçek zamanlı programlamada, standart Giriş-Çıkış cihazlarından barındırılamayan büyük veri yığınlarıyla ilgileniriz. Bu nedenle, verileri depolamak için ikincil depolamayı kullanmamız gerekiyor. İkincil depolamayı kullanarak verileri genellikle dosyalar biçiminde depolarız.
Metin veya ikili formatta akışlar adı verilen bir dizi veri kullanarak dosyalardan veri okuyabilir veya dosyalara veri yazabiliriz. C ++ 'da dosyalarla ilgili çeşitli girdi / çıktı ve diğer işlemler vardır. Bu eğitici, çeşitli sınıfları kullanan dosyalarla ilgili bu işlemleri açıklar.
=> Özel C ++ Eğitim Öğretici Serisi İçin Burayı Ziyaret Edin.
Ne öğreneceksin:
C ++ 'da Dosya Giriş / Çıkış Sınıfları
C ++ 'da cin ve cout dahil standart giriş ve çıkış işlevlerini tanımlayan bir iostream sınıfı gördük. Bu sınıf, sırasıyla klavye ve monitör gibi standart giriş ve çıkış cihazlarıyla sınırlıdır.
Dosya işlemleri söz konusu olduğunda, C ++ kullanılabilecek farklı bir sınıf kümesine sahiptir.
Bu sınıflar aşağıda açıklanmıştır:
- Yayın dışı: Çıktı dosya akışını belirten ve dosyalara veri yazmak için kullanılan dosya işleme sınıfı.
- Ifstream: Giriş dosyası akışını ifade eden ve dosyadan veri okumak için kullanılan dosya işleme sınıfı.
- Fstream: Hem ifstream hem de ofstream işleyebilen dosya işleme sınıfı. Bir dosyadan okumak ve bir dosyaya yazmak için kullanılabilir.
Aşağıdaki işlemler C ++ Dosya İşleme'de desteklenir:
- Bir dosya aç
- Bir dosyayı kapat
- Bir dosyadan oku
- Bir dosyaya yaz
Bu işlemlerin her birini ayrıntılı olarak görelim !!
Bir dosya aç
Akış sınıflarından birinin nesnesini okumak veya yazmak için veya her ikisi için bir dosyayla ilişkilendirmeye dosyanın açılması denir. Açık bir dosya, bu akış nesnesi kullanılarak kodda temsil edilir. Bu nedenle, bu akış nesnesinde gerçekleştirilen herhangi bir okuma / yazma işlemi fiziksel dosyaya da uygulanacaktır.
Akışla dosya açmak için genel sözdizimi şöyledir:
void open(const char* filename, ios::open mode mode)
Buraya,
dosyaadı => Açılacak dosyanın yolunu ve adını içeren dize.
mode => Dosyanın açılacağı modu gösteren isteğe bağlı parametre.
C ++, dosyanın açılabileceği çeşitli modları destekler. OR operatörünü kullanarak bu modların bir kombinasyonunu da belirtebiliriz.
siteler arası komut dosyası oluşturma nasıl yapılır
Dosya modu | Açıklama |
---|---|
ios :: in | Dosyayı okumak için giriş modunda açar. |
ios :: dışarı | Dosyaya veri yazmak için dosyayı çıktı modunda açar. |
ios :: yedi | Dosyanın sonundaki başlangıç konumunu ayarlayın. Dosya sonu bayrağı ayarlanmazsa, başlangıç konumu dosyanın başlangıcına ayarlanır. |
ios :: trunc | Dosya yazmak için açılmışsa ve zaten içeriği varsa, içerik kesilir. |
ios :: uygulama | Dosyayı, tüm içerik dosyanın sonuna eklenecek şekilde ekleme modunda açar. |
ios :: ikili | Dosyayı ikili modda açar. |
Örneğin,ikili kipte veri eklemek için “myfile.dat” dosyasını açmak istersek, aşağıdaki kodu yazabiliriz.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Daha önce de belirtildiği gibi, mod parametresi isteğe bağlıdır. İkinci parametreyi belirtmeden bir dosya açtığımızda, ofstream, ifstream veya fstream'in açık üye işlevi, dosyayı açmak için varsayılan bir moda sahiptir.
Bunlar aşağıdaki şekilde verilmiştir:
Sınıf | Varsayılan mod |
---|---|
Ifstream | ios :: in |
akıntı dışı | ios :: dışarı |
Fstream | ios :: in | ios :: out |
Dolayısıyla, kullanılan akım sınıfına bağlı olarak open fonksiyonunda ikinci parametreyi belirtmezsek dosya varsayılan modda açılır.
Bir Dosyayı Kapatmak
Bir dosyadaki girdi ve çıktı işlemlerini bitirdiğimizde bir dosyayı kapatmak ve dosyanın tuttuğu kaynakları serbest bırakmak için close işlevini kullanabiliriz.
Bir dosyayı kapatma işlevi:
void close()
Bu yüzden yukarıdaki myfile dosyasındaki işlemleri bitirdiğimizde, dosyayı şu şekilde kapatabiliriz:
myfile.close();
Dosya, kapat işlevi kullanılarak kapatıldıktan sonra, ilişkili dosya nesnesi başka bir dosyayı açmak için yeniden kullanılabilir.
Dosyadan Okuma
Akış çıkarma operatörünü (>>) kullanarak bir dosyadaki bilgileri satır satır okuyabiliriz. Bu, cin kullanarak standart girişten giriş okumaya benzer. Dosya durumunda tek fark, cin yerine ifstream veya fstream nesnesi kullanıyoruz.
Bir dosyadan okumak için örnek kod aşağıda verilmiştir:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<Yukarıdaki kodda bir dosya açıyoruz ve akım çıkarma operatörünü (>>) kullanarak dosyanın içeriğini okuyoruz. Okumayı bitirdikten sonra dosyayı kapatabiliriz.
Dosyaya Yazmak
Dosya işlemlerini kullanarak bir dosyaya da veri yazabiliriz. Bir dosyaya veri yazmak için kullandığımız operatör bir akış ekleme operatörüdür (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Aşağıdaki Örnek kodu ele alalım:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Burada girdiden bir satır okuyoruz ve bunu akım nesnesi ile açılan bir dosyaya yazıyoruz.
en iyi ücretsiz kötü amaçlı yazılım temizleme aracı nedir
Aşağıdaki kod örneğinde, tüm dosya işleme işlemlerinin bir gösterimini sağlıyoruz.
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Çıktı:
Dosyaya yazılıyor
İsminizi girin: Ved
Yaşınızı girin: 7
Bir dosyadan okumak
Tarafından
7
Yukarıdaki programda ilk olarak yazma modunda bir dosya açıyoruz. Ardından verileri, yani adı ve yaşı okur ve bir dosyaya yazarız. Daha sonra bu dosyayı kapatıyoruz. Daha sonra aynı dosyayı okuma modunda açıp veriyi dosyadan satır satır okur ve ekrana çıkarırız.
Bu nedenle, bu program tüm dosya G / Ç işlemlerini kapsar.
Dosya Durumu Cürufları
Dosyanın durumunu kontrol etmek için kullanılan bazı üye işlevler vardır. Tüm bu işlevler bir Boolean değeri döndürür.
Bu işlevleri aşağıdaki gibi tablo haline getirdik:
Fonksiyon Açıklama eof () Dosya okunurken dosyanın sonuna ulaşılırsa doğru döndürür. başarısız() Okuma / yazma işlemi başarısız olduğunda veya format hatası oluştuğunda doğru döndürür kötü() Bir dosyadan okuma veya dosyaya yazma başarısız olursa doğru döndürür. iyi() Yukarıdaki işlevlerden herhangi birinin çağrılmasının doğru döndürdüğü durumlarda yanlış döndürür.
Al / Koy ve Diğer Özel İşlemler
Şimdiye kadar gördüğümüz dosya G / Ç akışları, iostream gibi diğer G / Ç akışlarına benzer dahili bir alma ve yerleştirme konumlarına sahiptir.
İfstream sınıfı, sonraki giriş işleminde dosyada okunacak öğenin / karakterin konumunu içeren dahili bir alma konumuna sahiptir. Akış sınıfı, bir sonraki çıktı işleminde yazılacak öğenin / karakterin konumunu içeren dahili bir yerleştirme konumuna sahiptir.
Bu arada, fstream hem alma hem de yerleştirme pozisyonlarına sahiptir.
Bu pozisyonları kullanarak okuma ve yazmayı kolaylaştırmak için, bu pozisyonları gözlemlemek ve değiştirmek için kullanılan birkaç üye fonksiyonumuz var.
Bu işlevler aşağıda listelenmiştir:
Fonksiyonlar Açıklama tellg () Get işaretçisinin geçerli konumunu verir tellp () Yerleştirme işaretçisinin mevcut konumunu verir seekg (konum) Dosyanın başından itibaren belirtilen konuma bir işaretçi taşır seekg (ofset, yön) Parametre yönü tarafından verilen noktaya göre ofset değerine bir işaretçi alır. seekp (konum) Hareketler, dosyanın başlangıcından itibaren belirtilen konuma bir işaretçi koyar seekp (ofset, yön) Hareketler, parametre yönüyle verilen noktaya göre ofset değerine bir işaretçi koyar.
Parametre yön yukarıdaki fonksiyon prototiplerinde verilen bir numaralandırılmış tip türü seekdir ve ofsetin sayılacağı noktayı belirler.
Aşağıdaki değerlere sahip olabilir.
ios :: beg Akışın başlangıcından ofset ios :: cur Mevcut konumdan ofset ios :: end Akışın sonundan ofset
Bu işlevlerin kullanımını gösteren eksiksiz bir Örnek görelim.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< Çıktı:
Yeni dosya oluşturuldu
oracle formları ve raporları mülakat soruları
İlk Dosya İşaretçisi Konumu: 34
Seekp (-1, ios :: cur) sonrasında, Dosya İşaretçisi Konumu: 33
Seekg (5, ios :: beg) sonrasında, Dosya İşaretçisi: 5
Seekg (1, ios :: cur) sonrasında, Dosya İşaretçisi: 6
Yukarıdaki programda gösterildiği gibi, içinde bir metin satırı yazdığımız bir dosya oluşturduk. Ardından, yukarıda açıklanan çeşitli işlevleri kullanarak, Dosya İşaretçisinin çeşitli konumlarını görüntüleriz.
Sonuç
Bu eğiticide, bir dosyadan / dosyaya veri açmak, kapatmak ve okumak / yazmak için çeşitli dosya işlemlerini gördük.
Dosyadaki belirli konumlara erişmek için dosya işaretçisini değiştirme işlevlerini de gördük. Sonraki eğitimlerimizde, C ++ ile ilgili birkaç önemli konuyu tartışacağız.
=> Kolay C ++ Eğitim Serisini Okuyun.
Önerilen Kaynaklar
- C ++ 'da Temel Giriş / Çıkış İşlemleri
- Python'da Giriş-Çıkış ve Dosyalar (Python Aç, Dosyaya Oku ve Yaz)
- Java'da Temel G / Ç İşlemleri (Giriş / Çıkış Akışları)
- Unix'te Dosya Manipülasyonu: Unix Dosya Sistemine Genel Bakış
- Dosya Manipülasyonu için Unix Özel Karakterleri veya Metakarakterleri
- Unix Dosya Erişim İzinleri: Unix Chmod, Chown ve Chgrp
- VBScript Dosya Nesneleri: CopyFile, DeleteFile, OpenTextFile, Read and Write Text File
- Java Dağıtımı: Java JAR Dosyasının Oluşturulması ve Yürütülmesi