Dosya açık kontrolü
- C++ kursu
- Orta seviye
- Ders 91/116
- 5 dk
is_open() ile dosya açma kontrolünü öğrenirsin.
is_open ile güvenli açma
Bir dosya açıldığında başarılı olup olmadığını is_open() ile kontrol edersin. Dosya yoksa veya izin yoksa is_open() false döner.
Örnek: std::ifstream in("olmayan.txt"); if (in.is_open()) { /* oku */ } else { std::cout << "Açılamadı"; }. Bu desen, programın çökmeden hata vermesini sağlar. Açık kontrolü yapmadan >> çağırırsan dosya açılmamışsa okuma sessizce başarısız olur ve program yanlış çalışır. Bu yüzden her dosya açışında is_open() kontrolü yapmak sağlam bir alışkanlıktır.
Açılmayan dosyayı ele al
is_open() false döndüğünde program bir hata iletisi yazdırmalı ve dosyayı okumamalıdır. Aksi halde >> sessizce başarısız olur.
Örnek: if (!in.is_open()) { std::cout << "Hata"; return 1; }. Bu, dosya bulunamadığında programı erken sonlandırır. ! operatörü ile is_open() sonucunu ters çevirirsin. Bazı programlar if (in) yazarak da akışın durumunu sorgular; bu da is_open() ile benzer bir kontrol sağlar. Hangisini kullanırsan kullan, açık kontrolü olmadan dosya okuma güvenli değildir.
Uygulama Olmayan dosyayı kontrol et
Başlangıç kodu olmayan.txt dosyasını açmaya çalışır (bu dosya yok). is_open() ile kontrol et: açıksa "Açık", değilse "Kapalı" yazdır.
Başlangıç kodu
#include <iostream>
#include <fstream>
int main() {
std::ifstream in("olmayan.txt");
// is_open ile kontrol et ve durum yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <fstream>
int main() {
std::ifstream in("olmayan.txt");
if (in.is_open()) {
std::cout << "Açık";
} else {
std::cout << "Kapalı";
}
return 0;
}Beklenen çıktı
Kapalı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 in.is_open() false dönerse ne anlama gelir?
std::ifstream in("yok.txt");
if (in.is_open()) { /* oku */ }- Dosya çok büyük
- Dosya boş
- Dosya açılamadı Doğru cevap
- Dosya zaten kapalı
Açıklama: false dosyanın açılamadığını gösterir.
2 is_open çağrısını tamamla
if (in.____()) { std::cout << "Açık"; }
if (in.is_open()) { std::cout << "Açık"; }
Açıklama: is_open() dosya açık mı diye sorgular.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
is_open() |
Açık mı sorgusu |
if (in.is_open()) |
Güvenli açma |
return 1 |
Hata ile çıkış |
!in.is_open() |
Acilmadı sorgusu |