SORU
9 NİSAN 2011, CUMARTESİ


Neden iostream::bir döngü durumu yanlış kabul içinde eof?

Ben sadece this bir yorum bir döngü durumu iostream::eof kullandığını söyleyerek cevap buldu "neredeyse kesinlikle yanlış". Ben genellikle EOF için örtülü olarak denetler sanırım while(cin>>n) - gibi bir şey kullanmak, neden eof kontrol açıkça yanlış iostream::eof kullanıyor?

Nasıl C scanf("...",...)!=EOF sık sık herhangi bir sorun ile kullanın) kullanarak farklı mı?

CEVAP
9 NİSAN 2011, CUMARTESİ


iostream::eof tek set olacak çünküsonraakışın sonuna okuma. Yokdeğilbir sonraki okuma stream sonu olacağını gösteriyor.
Bu (ve read akışın sonunda gelecek o zaman farz) göz önünde bulundurun:

while(!inStream.eof()){
  int data;
  // yay, not end of stream yet, now read ...
  inStream >> data;
  // oh crap, now we read the end and *only* now the eof bit will be set (as well as the fail bit)
  // do stuff with (now uninitialized) data
}

Bu karşı

int data;
while(inStream >> data){
  // when we land here, we can be sure that the read was successful.
  // if it wasn't, the returned stream from operator>> would be converted to false
  // and the loop wouldn't even be entered
  // do stuff with correctly initialized data (hopefully)
}

Ve ikinci soru: Çünkü

if(scanf("...",...)!=EOF)

aynı gibi

if(!(inStream >> data).eof())

vedeğilaynı gibi

if(!inStream.eof())
    inFile >> data

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Developers

    Android Deve

    9 Kasım 2007
  • listedabive

    listedabive

    30 Ocak 2007
  • New Scientist

    New Scientis

    27 Kasım 2006