C++ Akış Hata Durumları

ServerErr0r

uid=0(root)
Katılım
12 Eyl 2009
Mesajlar
2,330
Reaction score
0
Puanları
0
Bir akışın durumu, ios sınıfı içindeki bit’ler ile test edilebilir. ios sınıfı, G/Ç için kullandığımız istream, ostream ve iostream sınıflarının temel sınıfıdır.

eofbit, bir streamda dosya sonu ile karşılaşıldıktan sonra ayarlanır. Bir program, akışın sonunun ötesinden veri almaya çalıştığında, dosya sonu ile karşılaşılıp karşılaşılmadığını belirlemek için eof üye fonksiyonunu kullanabilir. Aşağıdaki
Kod:
cin.eof()

çağrısı, eğer cin’de dosya sonu ile karşılaşıldığında true geri döndürür, eğer karşılaşılmamışsa false geri döndürür.

Bir akışta biçimlendirme hatası ile karşılaşılırsa failbit ayarlanır. Örneğin, program tamsayıları girdi olarak alırken girdi akışında rakam olmayan bir karakter ile karşılaşırsa bir biçimlendirme hatası oluşur. Böyle bir hata oluştuğu zaman, karakterler kaybolmaz. fail üye fonksiyonu, bir akış işlemi başarısız olursa bunu bildirir. Bu tür bir hatayı gidermek mümkündür.

Verinin kaybolmasıyla sonuçlanan bir hata oluşursa, o akışın badbit’i ayarlanır. bad üye fonksiyonu bir akış işleminin başarılı olup olmadığını bildirir. Bu tür ciddi hatalar genelde düzeltilemez

Bir akış için eofbit, failbit ya da badbit bit’lerinden hiçbiri ayarlanmadığı zaman ayarlanır. good üye fonksiyonu, bad,fail ve eof fonksiyonlarının hepsi false geri döndürdüğü zaman true döndürür. G/Ç işlemleri sadece "iyi" akışlar üzerinde gerçekleştirilmelidir.

rdstate üye fonksiyonu bir akışın hata durumunu geri döndürür. Örneğin, cout.rdstate çağrısı akışın durumunu geri döndürecektir. Daha sonra, bu durum ios::eofbit, ios::badbit ve ios::goodbit durumlarını inceleyen bir switch ifadesinde test edilebilir. Bir akışın durumunu test etmek için tercih edilen yol, eof, fail, bad ve good üye fonksiyonlarını kullanmaktır. Bu fonksiyonları kullanmak, programcının özel durum bit’lerini bilmesini gerektirmez.

clear üye fonksiyonu normalde, bir akışın durumunu "iyi" yapmak için kullanılır. Böylece, bu akış üzerinde G/Ç işlemleri gerçekleştirilebilir. clear’ın varsayılan argümanı ios::goodbit’tir, dolayısıyla,
Kod:
cin.clear();
ifadesi, cin’i temizler ve akışın goodbit’ini ayarlar. Aşağıdaki
Kod:
cin.clear(ios::failbit);
ifadesi ise failbit’i ayarlar. Programcı, kullanıcı tanımlamalı bir tipi cin ile girdi olarak almaya çalışırken hata ile karşılaşıyorsa bunu yapmak isteyebilir. Bu bağlamda, clear adı uygun değilmiş gibi gelse de, aslında bu doğrudur.
xeh2mc.png

operator! üye fonksiyonu, eğer badbit ya da failbit ya da her ikisi birde ayarlanmışsa, true geri döndürür. operator void * üye fonksiyonu, badbit ya da failbit ya da her ikisi birden ayarlanmışsa, false(0) geri döndürür. Bu fonksiyonlar, dosya işlemede, bir seçim veya tekrar yapısının kontrolündeki true / false koşulunu test ederken kullanışlı olmaktadır.
 
Geri
Üst